如何解决haskell 中组合的参数数量
最近我一直在学习 Haskell 中的组合,现在对这个例子有点困惑。
(const . min) 3 0 4
结果我得到 3,所以在内部它必须像这样计算:
const (min 3) 0 4
但我认为因为 min 需要两个参数,所以它应该是这样的:
const (min 3 0) 4
很明显,组合只采用了这个参数,在本例中为 3,而不是像我预期的那样采用 min 的所有参数。这是否意味着作品默认只接受一个参数,或者我在这里没有得到什么?
解决方法
您可以通过手动评估初始表达式来回答您的问题。
(const . min) 3 0 4
⇒ (\x -> const (min x)) 3 0 4 * defn of (.)
⇒ (const (min 3)) 0 4 * function application
⇒ ((\x y -> x) (min 3)) 0 4 * defn of const
⇒ (\y -> min 3) 0 4 * function application
⇒ (min 3) 4 * function application
⇒ 3 * because 3 is less than 4
值得注意的是,函数应用是左结合的,因此,f x y
与 (f x) y
的含义相同。
还值得注意的是,\x y -> z
与 \x -> \y -> z
的含义相同。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。