Ich benutze Racket und Dr. Racket.Warum undmap gibt #t in diesem Fall zurück?
Es gibt eine eingebaute Funktion namens andmap.
Das Werk integrierte Version von andmap auf diese Weise:
> (andmap positive? '(1 2 3))
#t
Funktionsnummer funktioniert in der Regel wie:
(number? 3)
> #t
(number? '())
>#f
ich nicht, warum dies geschieht:
(andmap number? '())
> #t
Ich denke, das Ergebnis sollte falsch sein.
Die Dokumentation sagt:
*If the lsts are empty, then #t is returned.*
Warum auf der Erde, die Sinn machen würde? Ich sehe es nicht. Ich bin neugierig auf die Designauswahl von Sprachen, besonders auf neue, wie Racket.
Beachten Sie, dass dies in Logiken genau so funktioniert, dass 'forall x in X: p (x)' wahr ist, unabhängig davon, was 'p' ist, wenn' X' leer ist. Dies ist bekannt als [vacuous truth] (https://en.wikipedia.org/wiki/Vacous_truth. – sepp2k
Auch, was es wert ist, Racket ist kaum "neu" -es ist fast so alt wie Haskell und Python, und es ist ein bisschen * älter * als Java und Ruby.;) –