【发布时间】:2015-02-22 05:54:26
【问题描述】:
Brent Yorgey 的出色 UPenn Haskell course 呈现:
fmap2 :: Functor f => (a -> b -> c) -> (f a -> f b -> f c)
fmap2 h fa fb = undefined
h、fa 和 fb 的类型细分为:
h :: a -> b -> c
fa :: f a
fb :: f b
我不清楚为什么h 指的是整个函数(a -> b -> c)。
为什么h 不能引用a 而fa 不能引用(b -> c)?
(a -> b -> c) 中的括号有区别吗?
编辑
对于只是阅读本文而不知道所指特定课程的任何人:
fmap2不能用该签名定义。其实应该是
liftA2 :: Applicative a => (a->b->c) -> (f a->f b->f c)
【问题讨论】:
-
对于只是阅读本文而不知道所指特定课程的任何人:
fmap2可以不使用该签名进行定义。它实际上需要是liftA2 :: Applicative a => (a->b->c) -> (f a->f b->f c)。
标签: haskell