Looking for haskell Keywords? Try Ask4Keywords

Haskell LanguageFestigkeitserklärungen


Syntax

  1. Infix [Ganzzahl] Ops
  2. infixl [integer] ops
  3. infixr [integer] ops

Parameter

Deklarationskomponente Bedeutung
infixr Der Operator ist rechtsassoziativ
infixl Der Operator ist linksassoziativ
infix Der Operator ist nicht assoziativ
optionale Ziffer Bindungsrang des Operators (Bereich 0 ... 9, Standard 9)
op1, ... , opn Betreiber

Bemerkungen

Um Ausdrücke mit Operatoren und Funktionen zu analysieren, verwendet Haskell Fixitätsdeklarationen, um herauszufinden, wo sich Klammern befinden. In Ordnung, es

  1. umschließt Funktionsanwendungen in Parens
  2. verwendet verbindliche Vorrangstellung, um Gruppen von Begriffen einzubinden, die alle von Operatoren derselben Vorrangstellung getrennt werden
  3. verwendet die Assoziativität dieser Operatoren, um herauszufinden, wie diesen Gruppen Parens hinzugefügt werden können

Beachten Sie, dass wir hier davon ausgehen, dass die Operatoren in einer bestimmten Gruppe aus Schritt 2 alle die gleiche Assoziativität haben müssen. Tatsächlich lehnt Haskell jedes Programm ab, bei dem diese Bedingung nicht erfüllt ist.

Als Beispiel für den obigen Algorithmus können wir den Vorgang des Hinzufügens von Klammern zu 1 + negate 5 * 2 - 3 * 4 ^ 2 ^ 1 schrittweise durchlaufen.

infixl 6 +
infixl 6 -
infixl 7 *
infixr 8 ^
  1. 1 + (negate 5) * 2 - 3 * 4 ^ 2 ^ 1
  2. 1 + ((negate 5) * 2) - (3 * (4 ^ 2 ^ 1))
  3. (1 + ((negate 5) * 2)) - (3 * (4 ^ (2 ^ 1)))

Weitere Einzelheiten finden Sie in Abschnitt 4.4.2 des Haskell 98-Berichts .

Festigkeitserklärungen Verwandte Beispiele