Ich lese über LISP.
Ich verstehe, wie die Präfixnotation auf einer bestimmten Ebene funktioniert, aber ich habe mich gefragt, ob es irgendwelche Tricks gibt, um sie intuitiv zu gestalten.
Ich lese über LISP.
Ich verstehe, wie die Präfixnotation auf einer bestimmten Ebene funktioniert, aber ich habe mich gefragt, ob es irgendwelche Tricks gibt, um sie intuitiv zu gestalten.
Antworten:
Es kann hilfreich sein, es von links nach rechts als gesprochene Sprache mit den richtigen Verben zu lesen. Zum Beispiel könnte (+ 3 2) "drei und zwei addieren" sein. Im allgemeineren Fall können Sie "$ operation für $ operanden ausführen" sagen. Auf denselben Fall angewendet: "Führen Sie den Addiervorgang für drei und zwei aus".
( = 1 2 )
und( > 4 2 )
Tricks? Wozu?
Es fühlt sich für Sie noch nicht intuitiv an, weil Ihr mentaler Parser nicht daran gewöhnt ist. Es wird besser, wenn Sie es einfach verwenden und es immer wieder lesen.
Man könnte es sich als eine Art Funktionsaufruf vorstellen:
(operator operand1 operand2 ...)
Daran ist nichts Besonderes. Wenn Sie Operatoren in C ++ (und vielen anderen Sprachen, die dies zulassen) überladen, müssen Sie diese Art von Funktion häufig genau so definieren:
MyClass operator+(MyClass const& x, MyClass const& y);
Viele Sprachen verwenden eine Mischung aus Präfix, Infix und sogar Postfix.
Lisp verwendet nur das Präfix - standardmäßig. Wenn sin (x) aus der Mathematik intuitiv ist, dann ist (sin x) nicht weit entfernt. Wenn der Umzug (Hund, nach Hause) ein traditioneller Verfahrensaufruf ist, dann ist es in Lisp nur (Umzug nach Hause).
Lisp macht keine Ausnahme für Mathematik und behandelt +, -, * und andere wie gewöhnliche Funktionsaufrufe.
Als (irgendwann) "Alles ist ein Funktionsaufruf" (oder eine spezielle Form oder eine Makroerweiterung, die beide die Oberflächensyntax "Funktionsaufruf" haben) angeklickt wurde, fühlte es sich ziemlich natürlich an.
Also, denn (= 1 2)
ich habe gelesen, dass 'call the numeric gleich Vergleich auf 1 und 2'.