haskell - 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 a
或measure b
当您希望它返回时a
或b
。
推荐阅读
- python-3.7 - 如何在 python 中为对象构建一种新的语法
- algorithm - 近似容差图
- java - 如何执行存储为 Java 中字符串的 MongoDB 查询?
- javascript - 未找到 React Router v5 嵌套路由
- powershell - 如何切断 -Delimiter -Header 'xxx' 下列中的所有值
- javascript - 为什么我的 iframe 文档宽度与 iframe 宽度相同?
- javafx - 如何省略缩放画布的像素化?
- sql - SQL 分组时间计算
- java - 在底部导航视图中,我如何在处理程序(1 分钟)运行之前显示不同的活动
- xamarin - Grail 的多个 Tiles ItemClickCommand 问题