I'll provide more details. Banana is actually a (shopping) cart: newtype Cart = Cart (Map.Map Product Amount) mapCart f (Cart m) = Cart (f m) I was too lazy to write down the signature of mapCart, since the type of the cart content might evolve. Now I have some state: type Shopping a = State Cart a and I update it: buy :: Amount -> Product -> Shopping () buy amount product = modify . mapCart $ Map.insertWith (+) product amount and the last line is the place where I use mapCart. This works as expected but I wanted to be sure that I do it "the right way". 2010/12/15 Stephen Tetley <stephen.tetley@gmail.com>:
Doesn't mapBanana work if you give it this signature:
mapBanana :: (Something -> Something) -> Banana -> Banana mapBanana f (Banana b) = Banana (f b)
Possibly you are wanting a polymorphic Banana?
newtype Banana a = Banana a
mapBanana :: (a -> b) -> Banana a -> Banana b mapBanana f (Banana x) = Banana (f x)
_______________________________________________ Beginners mailing list Beginners@haskell.org http://www.haskell.org/mailman/listinfo/beginners