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



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

λ> :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

为什么.有特殊的行为?

不带括号的.仅在中缀位置有效。然而,:t需要一个表达式,例如一个函数,并且要将中缀操作符符号转换为表达式,您需要用双亲包围它。

考虑:

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

myPlus = (+)

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

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

相关内容

  • 没有找到相关文章

最新更新