【发布时间】:2018-02-23 00:27:38
【问题描述】:
目前我正在阅读PureScript by example 的书,并对其中一个练习有疑问:
第 6 章,本章末尾的练习 5。
Write a Foldable instance for NonEmpty. Hint: resuse the foldable instance for arrays.
data NonEmpty a = NonEmpty a (Array a)
我最初的想法是这样实现它:
instance foldableNonEmpty :: Foldable (Array (a)) => Foldable (NonEmpty a) where
foldr f b (NonEmpty a ar) = NonEmpty a (foldr f b ar)
foldl f b (NonEmpty a ar) = NonEmpty a (foldl f b ar)
foldMap m (NonEmpty a ar) = NonEmpty a (foldMap m ar)
但这不起作用,目前我不知道为什么(编译器错误帮不了我)
Could not match kind
Type -> Type
with kind
Type
while checking the kind of Foldable (Array a) => Foldable (NonEmpty a)
在值声明中 foldableNonEmpty
有人能指出我应该朝哪个方向挖掘以找到答案吗?
【问题讨论】:
-
看看
Foldableis defined forArray是怎么做到的。您发现与您的定义有什么不同吗? -
谢谢你的这个建议,之前对我没有帮助,但是在 wuct 的解释下我发现它很有用
标签: functional-programming purescript