_______________________________________________You're right that the return type is more restricted than the argument, but it's in an *absolute* sense, not a relative one. It's not possible to relax `m d` to make it the same type as `c`, but it IS possible to constrain `c` to be the same as `m d`! And that's how `id` works here: the input in this case is known to be the same type as the output. You need something wrapped in a monad, and you already have that, so you just use it as-is._______________________________________________Thanks, it is still a bit fuzzy to me ...I understand what you did but what confuses me is that when i look at function with signature likef :: Monad m => c -> m dI always think that return type is somehow restricted in comparison to input because it demands that output type is wraped inside something (monad in this case).For such signature to fit id signature (a -> a) , c type shoud be also wraped inside monad but it is not case here...Anyhow, I still have to figure it outthanks
Beginners mailing list
Beginners@haskell.org
http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners
Beginners mailing list
Beginners@haskell.org
http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners