【发布时间】:2013-09-19 22:21:13
【问题描述】:
我不明白用 arity > 1 组合函数。 在 ghci 7.4.1 我输入:
((*).succ) 3 4
> 16
我不完全理解数学转换,但很明显它是一样的
(*) (succ 3) 4
但是当我这样做时:
( (\x y z -> x).(\a b -> a*b) ) 2 3 4 5
> 10
( (\x y z -> y).(\a b -> a*b) ) 2 3 4 5
> No instance for (Num (a0 -> t0))
现在我完全迷路了。谁能解释会发生什么?附言。我知道 haskell 中的所有内容都只有 1 个参数,但它并没有真正帮助我:)
【问题讨论】:
-
关于 Haskell 的另一个小知识是函数应用程序是左关联的。
-
有关
(.).(.)的详细信息,请参阅this SO answer,这是一个用于组合多参数函数的有趣习语。
标签: haskell functional-programming higher-order-functions