Operatorwertigkeit

Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.

Operatorwertigkeit
Ich komme leider jedes Mal durcheinander, wenn Klammern weggelassen werden. Könnte mir jemand bitte kurz auflisten, in welcher Reihenfolge die Operatoren binden und ob die Implikation links- oder rechtsassoziativ ist?

Bsp. (A => B => C) => A & B => C
Ich würde folgendermaßen klammern: ( ( ( A => B ) => C ) => ( A & B ) ) => C

Also Implikation linksassoziativ und entsprechend

  1. Negation (höchste Priorität)
  2. Konjunktion
  3. Disjunktion
  4. Implikation
  5. Äquivalenz (niedrigste Priorität)

Stimmt das?


Fast. Implikation ist immer rechtsassoziativ - ich komm aber auch immer durcheinander und bin großer fan lieber klammern zu setzen.
(Die Rechtsassoziativität kommt vom Curry-Howard-Isomorphismus; dann ist A=>B=>C der funktionstyp, der ein element aus A und eins aus B nimmt und ein Element aus C zurückliefert. (A=>B)=>C ist dagegen deutlich seltener, weil das eine Funktion wäre die eine Funktion A=>B nimmt und ein C zurückgibt)

Ansonsten stimmen die prioritäten :slight_smile:


Danke für die schnelle Antwort. Ich erinnere mich vage an ThProg :huh:


Bedeutet das dann, dass A => B => C praktisch als A => ( B => C) zu verstehen ist? ( Wenn man Klammern als syntaktisches Werkzeug verwenden würde um die Reihenfolge der abzuarbeitenden Operationen zu kennzeichnen. ) Btw. ich hatte kein ThProg.


ganz genau :slight_smile: In der Klausur werd ich aber gegebenenfalls einfach Klammern setzen um Verwirrung zu vermeiden