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)
Bool>. ST sip @-} foo :: ST s foo = S (\s -> s)
sip @-} foo :: ST s foo = S (\s -> s)