Jeu De Raquette:Fois avec des booléens
-
13-12-2019 - |
Question
(foldr + 0 '(1 2 3 4))
retourne 10
qui est ce que j'attends, mais
(foldr and false '(true true false))
me donne l'erreur
and: expected an open parenthesis before and, but found none
foldr
prend une fonction (qui prend deux paramètres, puisque j'ai une liste), et un cas de base, et une liste(s).J'attends mon deuxième ligne de code pour renvoyer la valeur true si la liste comporte plus de zéro booléens et ils sont tout à fait vrai, et c'est ainsi que j'ai pensé que cela fonctionnerait.Mais apparemment pas.
La solution
And
est une forme particulière et ne fonctionne pas avec foldr
, qui s'attend à une procédure comme deuxième argument.Essayez plutôt ceci:
(foldr (lambda (x y) (and x y)) #t '(#t #t #f)) ;#t as base case
Une autre solution pour ce cas particulier pourrait être l'aide andmap
:
(andmap identity '(#t #t #f))
Autres conseils
Dans un Régime, and
est généralement définie comme une macro ou une forme spéciale et non pas comme une procédure, c'est pourquoi il ne fonctionne pas:
#;1> +
#<procedure C_plus>
#;2> and
Error: unbound variable: and