>> data List t e = Cons e (List t e) | Null t > > I think this is isomorphic to > > Producer e Identity r Interesting. It does appear to be very similar. Except that the Monad/Functor variable is 'r' not 'e' Silvio