[Haskell-cafe] classes for data structures

Jules Bean jules at jellybean.co.uk
Wed Feb 6 10:12:48 EST 2008

Matthew Pocock wrote:
> Hi,
> I've been working a lot with maps, sets and lists. While the process of 
> getting things out of them is abstracted by foldable, traversable and 
> friends, the process of building one up is not. Would it be possible to have 
> something like:
> class Buildable b where
>   empty :: b a --makes an empty b with elements of type a
>   insert :: a -> b a -> b a --inserts the new element into the buildable

Another approach uses :

singleton :: a -> b a

and then just

mappend :: b a -> b a -> b a

i.e. make b a into a Monoid.

singleton = pure = return, if there happens to be a Monad/Applicative 
instance around.

And indeed there *will* be a Monad, if there is a sensible way of 
defining concat :: b (b a) -> b a, which there probably is.


More information about the Haskell-Cafe mailing list