
23 Jan
2007
23 Jan
'07
2:09 p.m.
Yitzchak,
Hmm, I thought it was the old one...
No, definitely the new one. The old one is: newtype ListT m a = ListT { runListT :: m [a] } which treats the entire list as one uninterleavable lump. The new one is: data MList' m a = MNil | a `MCons` MList m a type MList m a = m (MList' m a) newtype ListT m a = ListT { runListT :: MList m a } Note the definition of MList' is isomorphic to a use of Maybe. -- Dan