
On Wed, May 4, 2011 at 12:25 PM, Stephen Tetley
On 4 May 2011 13:21, Federico Mastellone
wrote: So, is it even possible to write a function with this type: getValues :: Foldable f => k -> MultiMap k v -> f v ???
I hadn't thought about it, but it's not possible to write that either. (!)
You would need something like an Insertable class instead, plus Monoid so you can get an initial empty Set or List:
getValues :: (Monoid (f v), Insertable f) => k -> MultiMap k v -> f v
But it won't be Foldable either, or is there a way to traverse a Monoid that I don't know?
class Insertable f where insert :: a -> f a -> f a
instance Insertable [] where insert a xs = (a:xs)
-- Won't actually compile due to Ord constraint on Set -- (though there are ways with GHC to around that). -- instance Insert Set.Set where insert = Set.insert
_______________________________________________ Beginners mailing list Beginners@haskell.org http://www.haskell.org/mailman/listinfo/beginners
-- Federico Mastellone Computer Science Engineer - ITBA ".. there are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult." Tony Hoare, 1980 ACM Turing Award Lecture.