operator return 可以是一个函数吗?
Can operator return a function?
我学Haskell.
这不是运算符,因为运算符必须有两个参数:
(###) :: Int -> Int -> Int -> Int
(###) a b c = a + b + c
但是这个案例呢:
(###) :: Int -> Int -> (Int -> Int)
(###) a b = \c -> a + b + c
这个函数有两个参数,但是 return 是一个函数...它现在是 运算符 了吗?我认为它仍然不是一个运算符,因为第二个变体首先被部分应用。但我不确定我是对的。运算符 return 可以是函数吗?
没有规定一个运算符必须有两个参数,事实上,Haskell 中的所有函数在语义上只接受一个参数。您的两个示例完全相同,因为类型 Int -> Int -> Int -> Int
被隐式括起来为 Int -> (Int -> (Int -> Int))
.
您可以像这样使用您的运算符
(1 ### 2) 3
或
1 ### 2 $ 3
我学Haskell.
这不是运算符,因为运算符必须有两个参数:
(###) :: Int -> Int -> Int -> Int
(###) a b c = a + b + c
但是这个案例呢:
(###) :: Int -> Int -> (Int -> Int)
(###) a b = \c -> a + b + c
这个函数有两个参数,但是 return 是一个函数...它现在是 运算符 了吗?我认为它仍然不是一个运算符,因为第二个变体首先被部分应用。但我不确定我是对的。运算符 return 可以是函数吗?
没有规定一个运算符必须有两个参数,事实上,Haskell 中的所有函数在语义上只接受一个参数。您的两个示例完全相同,因为类型 Int -> Int -> Int -> Int
被隐式括起来为 Int -> (Int -> (Int -> Int))
.
您可以像这样使用您的运算符
(1 ### 2) 3
或
1 ### 2 $ 3