Kein Argument (und) gibt t zurück

7

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.

    
iter 26.05.2015, 19:55
quelle

3 Antworten

17

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 :

%Vor%

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.

%Vor%     
soegaard 26.05.2015, 20:11
quelle
7

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.

    
John Clements 27.05.2015 16:49
quelle
4

Hier ist mein Versuch, es so einfach wie möglich zu machen: Ein and -Ausdruck ist falsch, wenn nur eines seiner Argumente falsch ist, andernfalls ist es wahr. Es ist also trivial wahr, wenn es keine Argumente gibt.

    
Rörd 27.05.2015 17:50
quelle

Tags und Links