Pregunta

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

devuelve 10, que es lo que espero, pero

(foldr and false '(true true false))

me da el error

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

foldr toma una función (que toma dos parámetros, ya que tengo una lista), y un caso base, y una lista (s).Espero que mi segunda línea de código devuelva verdadera si la lista tiene más de cero booleans y son verdaderos, y así es como pensé que funcionaría.Pero aparentemente no.

¿Fue útil?

Solución

And es una forma especial y no funciona con foldr, que está esperando un procedimiento como su segundo argumento.Intenta esto en lugar:

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

Otra alternativa para este caso en particular estaría usando andmap:

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

Otros consejos

En un sistema de esquemas, generalmente generalmente se define como una macro o forma especial y no como un procedimiento, por lo que no funciona:

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

Error: unbound variable: and

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top