On Wed, Apr 23, 2008 at 01:12:16PM +0200, apfelmus wrote: > I think that using [Maybe a] for this purpose is too fine-grained, I > would use a custom list type > > data River a = a :< (River a) | Done | Error > > (I didn't want to call it Stream because that name is too overloaded > already and PartialList is too long :) The three constructors > correspond to the three cases you mention. In particular, Error takes > the role of the last Nothing .
That sounds like a good idea. But I'd call it Creek, because a river is present year-round, while a creek sometimes dries up in the summer. :) And I'd also vote for adding a String (or more generic parameter) to the Error type, so you can give some sort of reporting when something goes wrong. String is appealing, because then you could make Creek a monad, and fail could generate a nice Error message (assuming fail = Error). Of course, you could take the silly metaphor even further data Creek a = a :< (Creek a) | Ocean | Drought String :) -- David Roundy Department of Physics Oregon State University _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe