{-# LANGUAGE StrictData #-} --{-# LANGUAGE TemplateHaskell #-} module Loop.Data where data ConcurrentEffect world = NoConcurrentEffect | ImmediateEffect { _immediateEffect :: IO (Maybe world) } | ConcurrentEffect { _immediateUpdate :: world , _sideEffect :: IO (world -> Maybe world) }