【发布时间】:2019-03-29 19:12:18
【问题描述】:
我正在复习考试,其中一个练习题要求编写类型声明
mystery :: ---complete here----
mystery x p
| p (head x) = tail x
| otherwise = head x : mystery (tail x) p
没有看答案,我以为神秘是类型:
mystery:: [a] -> a -> [a]
但是当我查看比较的解决方案时:
mystery:: [a] -> (a -> Bool) -> [a]
为什么是a -> Bool?代码行中的什么可以告诉我在我的类型声明中考虑Bool?
【问题讨论】:
-
你对
mystery :: [a] -> a -> [a]的想法是什么?查找类型比其他任何事情都更像是一种逻辑练习。如果你能解释清楚,你就可以找出哪里出错了。 -
“代码行中的什么可以告诉我在我的类型声明中考虑
Bool?”对p的调用用作保护中的谓词,它始终是Bool类型。
标签: function haskell definition type-declaration