在书中“哈斯克尔编程”的类型,foldr相似的定义是:我感到困惑的功能`foldr`的哈斯克尔
foldr :: (a -> b ->b) -> b -> [a] -> b
foldr f v [] = v
foldr f v (x:xs) = f x (foldr f v xs)
我无法理解f
非常好。
原因f
适用于[a]
,参数a
在(a -> b -> b)
是显而易见的。 的参数v
具有类型b
,但在最后b
(甲 - >乙 - >b)和(a - >乙 - > B) - >乙 - >并[a] - >b是怪异。
是否表示功能f
和foldr
的型号为b
?这怎么可能?
我开始为“这怎么可能?”写回答。问题的一部分,但后来卡住了一下。你能说你为什么认为这是不可能的吗?我认为这将有助于指导解释。 –