module Acme.TimeMachine.Suspension (
        Suspension(..),
        mkSuspension
    )
    where

-- | Data representing the entire history of the state. Basically a very large list.
data Suspension s = Suspension s (Suspension s)

-- | Create an infinite history consisting of the same state.
mkSuspension :: s -> Suspension s
mkSuspension s = Suspension s (mkSuspension s)