Haskell 代码和类型中的参数数量不同,为什么?
Number of arguments in Haskell code and type is different, why?
任何人都可以解释下面的代码,请逐步解释它的作用。我知道它正在定义一个函数及其输入,但是 (+)
是做什么的,为什么 plus
中有三个 Int
和 四个 plusplus
的类型中有 Int
s,而 plusplus
的代码中似乎只有 3 个参数?
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中,->
用于分隔参数的类型,以及return值。所以,
plus :: Int -> Int -> Int
是一个需要两个 Int
和 return 一个 Int
.
的函数
plusPlus :: Int -> Int -> Int -> Int
是一个需要三个 Int
和 return 一个 Int
.
的函数
参数和 return 值的语法相同的原因是 currying.
说实在的迂腐,
plus :: Int -> Int -> Int -- ~ Int -> (Int -> Int)
是一个接受 Int
的函数,return 是一个接受 Int
的函数,return 接受 Int
.
plusPlus :: Int -> Int -> Int -> Int -- ~ Int -> (Int -> (Int -> Int))
是一个接受 Int
的函数,return 是一个接受 Int
的函数,return 是一个接受 Int
的函数return 和 Int
.
在实践中,将 Haskell 函数称为采用多个参数是很方便的。但从技术上讲,Haskell 函数总是接受一个参数。参数类型在->
的左侧,return类型在->
的右侧,但return类型本身可能是另一个函数。
任何人都可以解释下面的代码,请逐步解释它的作用。我知道它正在定义一个函数及其输入,但是 (+)
是做什么的,为什么 plus
中有三个 Int
和 四个 plusplus
的类型中有 Int
s,而 plusplus
的代码中似乎只有 3 个参数?
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中,->
用于分隔参数的类型,以及return值。所以,
plus :: Int -> Int -> Int
是一个需要两个 Int
和 return 一个 Int
.
plusPlus :: Int -> Int -> Int -> Int
是一个需要三个 Int
和 return 一个 Int
.
参数和 return 值的语法相同的原因是 currying.
说实在的迂腐,
plus :: Int -> Int -> Int -- ~ Int -> (Int -> Int)
是一个接受 Int
的函数,return 是一个接受 Int
的函数,return 接受 Int
.
plusPlus :: Int -> Int -> Int -> Int -- ~ Int -> (Int -> (Int -> Int))
是一个接受 Int
的函数,return 是一个接受 Int
的函数,return 是一个接受 Int
的函数return 和 Int
.
在实践中,将 Haskell 函数称为采用多个参数是很方便的。但从技术上讲,Haskell 函数总是接受一个参数。参数类型在->
的左侧,return类型在->
的右侧,但return类型本身可能是另一个函数。