"Desplegar" para el ceceo común?
-
06-07-2019 - |
Pregunta
Aprendí bastante del esquema de SICP pero ahora estoy más interesado en el lisp común. Sé que el fold
de lisp común es reduce
, con argumentos especiales para el plegado izquierdo o derecho, pero ¿cuál es el equivalente de despliegue
? Buscar en Google no ha ayudado mucho. De hecho, me da la impresión de que no hay despliegue ???
Solución
Common Lisp tiene (loop ... collect ...)
. Comparar
(loop for x from 1 to 10 collect (* x x))
con su equivalencia usando despliegue
:
(unfold (lambda (x) (> x 10)) (lambda (x) (* x x)) (lambda (x) (+ x 1)) 1)
En general, (desplegar p f g seed)
es básicamente
(loop for x = seed then (g x) until (p x) collect (f x))
Editar: corregir error tipográfico
Otros consejos
El hiperespec lisp común no define una función despliegue
, pero ciertamente puede escribir la suya. Su definición de esquema traduce casi símbolo por símbolo.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow