
On Tue, Feb 24, 2009 at 01:19:49PM +0000, Duncan Coutts wrote:
On Tue, 2009-02-24 at 13:57 +0100, Christian Maeder wrote:
Duncan Coutts wrote:
Manipulating Entries is also not a typical user task. (Maybe the type Entries should just be "[Either String Entry]", but the given type is fine, as it only allows a final failure string)
Yeah I think only one failure is good.
data Entries = Entries [Entry] (Maybe String) or directly using "([Entry], Maybe String)"
Sadly that does not account for streaming. We may not discover the error until we've processed 100 megabytes of tar file. So we cannot give top level access to an error that might happen at the end.
Something that does account for streaming is MList (Either String) Entry, where MList is from "ListT done right". [1] This would have the advantage of being able to use all the standard Monad/MList machinery. It would also have the disadvantage that MList isn't in any standard library, and adds some extra constructor (un)packing. Cheers, Remi [1] http://www.haskell.org/haskellwiki/ListT_done_right