2016-09-28 2 views
2

Ich lerne über Operator Vorrang in Haskell. Mehrere Orte im Internet erwähnen, dass die Funktion Anwendung höheren Vorrang als Operatoren hat, aber ich konnte keine endgültige Quelle dafür finden. HierWo ist die Quelle für: "Funktionsanwendung hat höhere Priorität als Infix-Operatoren" [Haskell]

ist eine solche Erwähnung von A Gentle Introduction To Haskell:

Funktion Anwendung hat eine höhere Priorität als jeder Infixoperator

Es gibt einen Abschnitt in der Haskell 98 Report, die es spielt:

normale Konstruktor-Anwendung hat höhere Priorität als Infix-Konstruktor-Anwendung

Wo ist eine definitive Quelle? Ich würde erwarten, dass es in den Haskell 98 Report aufgenommen wird, vielleicht lese ich es nicht richtig.

+0

Funktion Anwendung ist ein Sonderfall, aber im Allgemeinen können Sie dies mit dem ': i' Befehl auf' Ghci' überprüfen. Zum Beispiel würde ': i (.)' Sagen, dass die Funktionszusammensetzung rechts assoziativ mit einer Vorrangstufe gleich 9 ist ('infixr 9'). – jarandaf

Antwort

6

Sie können es here in der EBNF zu finden:

exp^10 -> ... 
     | fexp 

fexp -> [fexp] aexp 

die im Grunde diese Funktion Anwendung bedeutet hat Vorrang 10, höher als alle Sie berechtigt sind, an einen Betreiber zu geben.

6

Die Haskell Report ist selbst eine definitive Referenz, so dass das Zitat, das Sie gefunden haben, ausreichend ist.

Sie können die gleichen Informationen auch in der Grammatik finden.

Sie können sehen, dass die Funktionsanwendung den Vorrang "10" hat, während alle Infix/Präfix-Operatoren 9 oder niedriger sind.

+1

Richtig, obwohl sich das spezifische Report-Zitat im OP eher auf _type operators_ als auf Value-Level-Infix-Operatoren bezieht. – leftaroundabout

+0

Ja, mir ist aufgefallen, dass ... die Informationen für OP eher hilfreich sind als für mich. –

Verwandte Themen