关于Haskell中函数的fmap

时间:2012-03-28 23:51:36

标签: haskell

我正在尝试为函数实现fmap,并且无法弄清楚如何将“lift”应用于函数,而不是所有文档引用的简单类型如Maybe

我想要实现的功能类型是

fmapFunction :: (a -> b) -> (e -> a) -> (e -> b)

我应该怎么做呢?

1 个答案:

答案 0 :(得分:11)

可能更容易看到你是否翻转了类型:

(e -> a) -> (a -> b) -> (e -> b)

我们可以将e变为a,将a变为b。那么我们如何将e变成b

不要过分关注“提升”;对于Functor个实例,发现实现的最佳方法就是遵循类型。