5 Stimmen

Schema/Racket: Falten mit Booleschen

(foldr + 0 '(1 2 3 4))

gibt zurück. 10 was ich auch erwarte, aber

(foldr and false '(true true false))

gibt mir die Fehlermeldung

and: expected an open parenthesis before and, but found none

foldr benötigt eine Funktion (die zwei Parameter benötigt, da ich eine Liste habe), einen Basisfall und eine Liste(n). Ich erwarte, dass meine zweite Codezeile true zurückgibt, wenn die Liste mehr als null Booleans enthält und alle true sind. Aber anscheinend nicht.

8voto

Óscar López Punkte 224631

And ist eine spezielle Form und funktioniert nicht mit foldr die eine Verfahren als sein zweites Argument. Versuchen Sie stattdessen dies:

(foldr (lambda (x y) (and x y)) #t '(#t #t #f)) ;#t as base case

Eine andere Alternative für diesen speziellen Fall wäre die Verwendung von andmap :

(andmap identity '(#t #t #f))

0voto

Justin Ethier Punkte 126797

In einem Schema-System, and ist in der Regel als Makro oder Sonderform und nicht als Prozedur definiert, weshalb es nicht funktioniert:

#;1> +
#<procedure C_plus>
#;2> and

Error: unbound variable: and

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X