为什么打印类型信息需要括号。?

时间:2015-05-25 13:38:51

标签: haskell syntax parse-error

要打印我使用的.的类型信息:

λ> :type (.)
(.) :: (b -> c) -> (a -> b) -> a -> c

如果我省略括号,则会导致错误:

λ> :type .
<interactive>:1:1: parse error on input ‘.’

其他类型的情况也是如此:

λ> :type 1
1 :: Num a => a
λ> :type (1)
(1) :: Num a => a
λ> :type True 
True :: Bool
λ> :type (True)
(True) :: Bool

为什么.的特殊行为?

1 个答案:

答案 0 :(得分:7)

没有括号的

.仅适用于中缀位置。 :t然而需要表达,例如一个函数,并将一个中缀操作符符号转换为一个表达式,你需要用parens包围它。

考虑:

3 + 4 = (+) 3 4  -- pseudocode

myPlus = (+)

相同
myPlus a b = a + b
myPlus a b = (+) a b

它同样适用于所有其他中缀运算符,例如*>>=&&&等。

相关问题