Hi,

Does this function remind anybody of anything? It seems like I'm missing an obvious abstraction:

composeWriter :: [a -> (a, b)] -> a -> (a, [b])
composeWriter [] a
  = (a, [])
composeWriter (f:fs) a
  = let (a', b) = f a
           (final_a, bs) = composeWriter fs a'
     in (final_a, b:bs)

It's almost but not quite composition for functions in the Writer monad; the difference is that every function has exactly one b result, rather than a list of them.

Edsko

_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to