haskell中组合的参数数

haskell中组合的参数数,haskell,composition,Haskell,Composition,最近我一直在学习haskell的作文,现在对这个例子有点困惑 (const . min) 3 0 4 结果我得到了3,所以在内部,它的计算方式必须如下: const (min 3) 0 4 但我想既然min有两个论点,它应该是这样的: const (min 3 0) 4 显然,这篇文章只接受了这一个参数,在本例中是3,而不是像我预期的那样,接受了min的所有参数。这是不是意味着组合每个默认值只接受一个参数,或者我这里没有得到什么?您可以通过手动计算初始表达式来回答您的问题 (const .

最近我一直在学习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
值得注意的是,函数应用程序是左关联的,因此,
fxy
的意思与
(fx)y
相同


还值得注意的是,
\x y->z
的意思与
\x->\y->z
相同。您可以通过手动计算初始表达式来回答问题

(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
值得注意的是,函数应用程序是左关联的,因此,
fxy
的意思与
(fx)y
相同


还值得注意的是,
\x y->z
\x->\y->z

所有Haskell函数都有一个参数。例如,
min 3 0
将(1-arg)函数
min
应用于参数
3
。结果是一个(1-arg)函数,然后应用于
0
。其结果是数字
0
。我们当然想把代码< min /代码>看成是一个2-ARG函数,但是从技术上讲,Haskell没有这样的东西。连贯地,合成由两个(1-arg)函数组成。要组成“2-arg”函数(即,1-arg返回1-arg函数),需要其他运算符,或者只使用lambda。所有Haskell函数都有一个参数。例如,
min 3 0
将(1-arg)函数
min
应用于参数
3
。结果是一个(1-arg)函数,然后应用于
0
。其结果是数字
0
。我们当然想把代码< min /代码>看成是一个2-ARG函数,但是从技术上讲,Haskell没有这样的东西。连贯地,合成由两个(1-arg)函数组成。要组合“2-arg”函数(即,1-arg返回1-arg函数),需要一些其他运算符,或者只需使用lambda。