I'm trying to implement fmap for functions and can't quite figure out how to the "lift" applies to a function as compared to how all the documentation refers to simple kinds like Maybe
The type of the function I want to implement is
fmapFunction :: (a -> b) -> (e -> a) -> (e -> b)
Any ideas how I should go about this?
-
4You could also cheat.Daniel Wagner– Daniel Wagner2012年03月29日 04:12:23 +00:00Commented Mar 29, 2012 at 4:12
1 Answer 1
It may be easier to see if you flip the types around:
(e -> a) -> (a -> b) -> (e -> b)
We can turn an e into an a, and an a into a b. So how can we turn an e into a b?
Don't focus too much on "lifting"; with Functor instances, the best way to discover the implementation is simply to follow the type.
answered Mar 29, 2012 at 0:04
ehird
40.9k3 gold badges184 silver badges184 bronze badges
Sign up to request clarification or add additional context in comments.
Comments
lang-hs