Ответ 1
Вот соответствующие биты источников GHC в compiler/basicTypes/BasicTypes.lhs
:
maxPrecedence, minPrecedence :: Int
maxPrecedence = 9
minPrecedence = 0
defaultFixity :: Fixity
defaultFixity = Fixity maxPrecedence InfixL
negateFixity, funTyFixity :: Fixity
-- Wired-in fixities
negateFixity = Fixity 6 InfixL -- Fixity of unary negate
funTyFixity = Fixity 0 InfixR -- Fixity of '->'
Таким образом, фиксация ->
равна infixr 0
.
Вы также можете вывести это из сообщения об ошибке. Создайте следующий исходный файл Haskell:
{-# LANGUAGE TypeOperators #-}
data a // b
infixl 0 //
Тогда:
GHCi> :kind Int // Int -> Int
<interactive>:1:5:
Precedence parsing error
cannot mix ‘//’ [infixl 0] and ‘(->)’ [infixr 0] in the same infix expression