2015-05-25 2 views
0

Для печати информации о типе . я использую:Зачем нужны скобки для печати информации типа.?

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

Почему особое поведение для .?

+5

Это верно для всех операторов. Это всего лишь разбор. –

ответ

7

. без круглых скобок работает только в положении infix. :t, однако, принимает выражение, например. функцию и превратить символ оператора инфикса в выражение, вам нужно окружить его парами.

Рассмотрим:

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

и

myPlus = (+) 

, который является таким же, как

myPlus a b = a + b 
myPlus a b = (+) a b 

И это в равной степени относится ко всем другим операторам инфиксные, таких как * или >>= или &&& и т.д. .

Смежные вопросы