Haskell代码中的参数数量和类型不同,为什么?

Haskell代码中的参数数量和类型不同,为什么?,haskell,types,syntax,arguments,type-signature,Haskell,Types,Syntax,Arguments,Type Signature,有人能解释一下下面的代码吗?请一步一步地解释。我知道它正在定义一个函数及其输入,但是(+)做什么,为什么plus中有三个Ints和plusplus类型中有四个Ints,而plusplus的代码中似乎只有三个参数 plus :: Int -> Int -> Int plus = (+) plusPlus :: Int -> Int -> Int -> Int plusPlus a b c = a + b + c +是加法运算符。将运算符放在括号中,如(+

有人能解释一下下面的代码吗?请一步一步地解释。我知道它正在定义一个函数及其输入,但是
(+)
做什么,为什么
plus
中有三个
Int
s和
plusplus
类型中有四个
Int
s,而
plusplus
的代码中似乎只有三个参数

 plus :: Int -> Int -> Int 
 plus = (+)

 plusPlus :: Int -> Int -> Int -> Int
 plusPlus a b c = a + b + c

+
是加法运算符。将运算符放在括号中,如
(+)
,是指加法函数本身,而不是使用
+
当场添加两个数字。基本上,这是:

plus = (+)
相当于:

plus a b = a + b
无论哪种方式,它都将
plus
定义为
+
的同义词

在Haskell中,
->
用于分隔参数的类型以及返回值。所以

是一个函数,它接受两个
Int
s并返回一个
Int

plusPlus :: Int -> Int -> Int -> Int
plusPlus :: Int -> Int -> Int -> Int     -- ~  Int -> (Int -> (Int -> Int))
是一个函数,它接受三个
Int
s并返回一个
Int

plusPlus :: Int -> Int -> Int -> Int
plusPlus :: Int -> Int -> Int -> Int     -- ~  Int -> (Int -> (Int -> Int))
参数和返回值的语法相同的原因在于

要真的学究气

plus :: Int -> Int -> Int                -- ~  Int -> (Int -> Int)
是一个函数,它接受一个
Int
,并返回一个函数,该函数接受一个
Int
,并返回一个
Int

plusPlus :: Int -> Int -> Int -> Int
plusPlus :: Int -> Int -> Int -> Int     -- ~  Int -> (Int -> (Int -> Int))
是一个函数,它接受一个
Int
,并返回一个接受一个
Int
的函数,返回一个接受一个
Int
并返回一个
Int
的函数

plusPlus :: Int -> Int -> Int -> Int
plusPlus :: Int -> Int -> Int -> Int     -- ~  Int -> (Int -> (Int -> Int))

在实践中,可以方便地将Haskell函数称为接受多个参数。但从技术上讲,Haskell函数总是使用一个参数。参数类型位于
->
的左侧,返回类型位于
->
的右侧,但返回类型本身可能是另一个函数。

+
是加法运算符。将运算符放在括号中,如
(+)
,是指加法函数本身,而不是使用
+
当场添加两个数字。基本上,这是:

plus = (+)
相当于:

plus a b = a + b
无论哪种方式,它都将
plus
定义为
+
的同义词

在Haskell中,
->
用于分隔参数的类型以及返回值。所以

是一个函数,它接受两个
Int
s并返回一个
Int

plusPlus :: Int -> Int -> Int -> Int
plusPlus :: Int -> Int -> Int -> Int     -- ~  Int -> (Int -> (Int -> Int))
是一个函数,它接受三个
Int
s并返回一个
Int

plusPlus :: Int -> Int -> Int -> Int
plusPlus :: Int -> Int -> Int -> Int     -- ~  Int -> (Int -> (Int -> Int))
参数和返回值的语法相同的原因在于

要真的学究气

plus :: Int -> Int -> Int                -- ~  Int -> (Int -> Int)
是一个函数,它接受一个
Int
,并返回一个函数,该函数接受一个
Int
,并返回一个
Int

plusPlus :: Int -> Int -> Int -> Int
plusPlus :: Int -> Int -> Int -> Int     -- ~  Int -> (Int -> (Int -> Int))
是一个函数,它接受一个
Int
,并返回一个接受一个
Int
的函数,返回一个接受一个
Int
并返回一个
Int
的函数

plusPlus :: Int -> Int -> Int -> Int
plusPlus :: Int -> Int -> Int -> Int     -- ~  Int -> (Int -> (Int -> Int))
在实践中,可以方便地将Haskell函数称为接受多个参数。但从技术上讲,Haskell函数总是使用一个参数。参数类型位于
->
的左侧,返回类型位于
->
的右侧,但返回类型本身可能是另一个函数