module StateMonad () where data ST s = S { act :: s -> s } {-@ data ST s

Bool> = S { act :: (s

-> s

) } @-} {-@ foo :: forall Bool>. ST sip @-} foo :: ST s foo = S (\s -> s)