[jhc] Monad.ST

John Meacham john at repetae.net
Sat Nov 14 19:54:14 EST 2009


On Sat, Nov 14, 2009 at 04:15:40PM -0800, John Meacham wrote:
> In jhc, we would use something similar to what ghc does. the current IO
> definition is:
> 
> newtype IO a = IO (World__ -> (# World__, a #))
> 
> So, the only difference would be ST takes any state, not just the world,
> or
> 
> newtype ST s a = ST (s -> (# s, a #))

It occurs to me that something like this would be closer to the ghc
way..

> data State s :: #
> newtype ST s a = ST (State s -> (# State s, a #))

then making IO

> newtype IO a = ST World__ a

but just the newtype around IO is probably a better first pass as it
won't require mucking with the IO implementation. Plus it will be
portable to other compilers that have unsafePerformIO...

        John

-- 
John Meacham - ⑆repetae.net⑆john⑈ - http://notanumber.net/


More information about the jhc mailing list