Haskell函数式编程,函数作为参数

我正在训练功能性 Haskell 并且无法理解这有什么问题:

maxBy :: (a -> Int) -> a -> a -> a
maxBy measure a b = max (measure a) (measure b)

以下是此 maxBy 函数如何工作的示例:

maxBy (*2)   3       5      ==>  5
maxBy length [1,2,3] [4,5]  ==>  [1,2,3]
maxBy head   [1,2,3] [4,5]  ==>  [4,5]

错误信息是:

无法将预期类型 'a' 与实际类型 'Int' 匹配 'a' 是一个刚性类型变量,受以下类型签名约束:maxBy :: forall a。(a -> Int) -> a -> a -> a

回答

您的函数正在返回measure ameasure b当您希望它返回时ab


以上是Haskell函数式编程,函数作为参数的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>