Your class looks like Unfoldable from Data.Collections. foo is insert and bar is empty. The other three methods can be defined in terms of insert and empty.
On 21 April 2014 07:09, Bardur Arantsson <spam@scientician.net> wrote:
Hi all,
I was wondering if anyone out there knows if this type class has a name?
class Foo a e where
foo :: e -> a -> a
bar :: a
(I also have a fundep a -> e, but that's not essential.)
Essentially the usage is:
You have a sequence of "events" e_i and a starting value
"bar" and can use the "foo" function to apply all events
to that starting value
foo e_n $ foo e_{n-1} $ ... $ foo e_0 $ bar
and thus get the final value of the a induced by the
events e_i.
(I've included the "bar" starting value in the type class, but I suppose
it could be supplied by a Default instance.)
Regards,
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe