操作员可以返回功能吗?

时间:2015-01-24 13:22:04

标签: haskell

我学习Haskell。

这不是运算符,因为运算符必须有两个参数:

(###) :: Int -> Int -> Int -> Int
(###) a b c = a + b + c

但是这个案子呢:

(###) :: Int -> Int -> (Int -> Int)
(###) a b = \c -> a + b + c

此函数有两个参数,但返回一个函数......现在是运算符吗?我认为它不是运营商,因为第二个变量首先是部分应用。但我不确定我是对的。操作员可以返回一个函数吗?

1 个答案:

答案 0 :(得分:7)

没有规则说操作符必须有两个参数,实际上,在语义上,Haskell中的所有函数只接受一个参数。您的两个示例完全相同,因为Int -> Int -> Int -> Int类型被隐式括起来为Int -> (Int -> (Int -> Int))

您可以像这样使用您的运营商

(1 ### 2) 3

1 ### 2 $ 3