【问题标题】:Why are brackets required to print type information of .?为什么需要括号来打印.的类型信息?
【发布时间】:2015-08-07 00:24:11
【问题描述】:

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

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

为什么. 的特殊行为?

【问题讨论】:

  • 所有运营商都是如此。这只是一个解析的事情。

标签: haskell syntax parse-error


【解决方案1】:

. 不带括号仅适用于中缀位置。 :t 但是需要一个表达式,例如一个函数,并且要将中缀运算符符号转换为表达式,您需要用括号括起来。

考虑:

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

myPlus = (+)

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-08-09
    • 2011-10-12
    • 2021-06-06
    • 1970-01-01
    • 1970-01-01
    • 2019-10-27
    • 1970-01-01
    相关资源
    最近更新 更多