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.

Était-ce utile?

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
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top