function haskell operators precedence infix-notation

function - Función de infijo Haskell precedencia de la aplicación



operators precedence (2)

Sea fxy = x * y . Podemos aplicar esta función de dos maneras: f 5 6 , o, usando la notación infijo, 5 `f` 6 . ¿Se aplican las reglas del operador a esta última expresión? ¿Qué precedencia tendrá esta aplicación? ¿Es solo otra forma de aplicación de función, y también tendrá la mayor prioridad?

Supongo que el compilador ve esta forma especial (debido a `` y / o el nombre que comienza con una letra (?)), Y en realidad lo trata como una aplicación de función ordinaria, en lugar de considerarlo un operador.


El informe Haskell 98 tiene una sección sobre aplicaciones de operador que lo aclara:

Un operador es un símbolo de operador, como + o $$, o es un identificador ordinario encerrado en acentos graves (backquotes), como `op`. Por ejemplo, en lugar de escribir la aplicación de prefijo op xy, se puede escribir la aplicación de infijo x `op` y. Si no se da una declaración de corrección para `op`, entonces el valor predeterminado es la prioridad más alta y la asociatividad a la izquierda (ver Sección 4.4.2).

Como lo indican las otras respuestas, el Informe también tiene una sección sobre haskell.org/onlinereport/decls.html#fixity que le permite definir su propia fixity, por ejemplo:

infixl 7 `op`


Si no se da una declaración de fijación explícita, como por ejemplo

infixl 7 `quot`

una función de infijo con infixl 9 tiene la fijación predeterminada de infixl 9 , por lo que se tratará como cualquier otro operador de infijo con la misma fijación.