Sowohl CL als auch Scheme definieren (and)
, um t
(oder #t
) ohne Argumente zurückzugeben.
Ich versuche die Gründe dafür zu verstehen. Meine naive Annahme ist, dass eine leere Menge falsch ist, und das Übergeben von Null-Argumenten fühlt sich an, als würde man nichts passieren, was wahr sein kann.
Bearbeiten: clojure folgt der gleichen Konvention. Ich muss eine grundlegende Lisp-Annahme vermissen.
Das leere Produkt ist 1. Der Grund ist, dass 1 ein neutrales Element für *
ist.
Wenn Sie das Produkt von 2 und 3 haben und dann mit dem Produkt von nichts multiplizieren, erhalten Sie 2 * 3 * 1 = 6. Wir können
schreiben %Vor% Dieselbe Berechnung mit and
:
Wir möchten, dass das leere (and)
einen Wert ?
liefert, der das Ergebnis nicht beeinflusst.
Die Antwort lautet #t
, da #t
ein neutrales Element ist.
Hier ist eine intuitivere Antwort: ein "und" ist wie eine Checkliste: Sie sind "fertig" (das heißt, wahr), wenn alle Dinge auf der Liste wahr sind. Angenommen jemand hat Ihnen eine leere Checkliste gegeben; In diesem Fall haben Sie nichts zu überprüfen, und Sie sind trivial erledigt.
Tags und Links clojure scheme lisp common-lisp