Question

J’ai appris pas mal de schémas avec SICP mais je suis plus intéressé par le lisp commun maintenant. Je sais que le fold de lisp commun est reduction , avec des arguments spéciaux pour le repliement à gauche ou à droite, mais quel est l'équivalent de unfold ? Googler n'a pas beaucoup aidé. En fait, j'ai l'impression qu'il n'y a pas de dévoilement ???

Était-ce utile?

La solution

Common Lisp a (loop ... collect ...) . Comparer

(loop for x from 1 to 10 collect (* x x))

avec son équivalence utilisant déplier :

(unfold (lambda (x) (> x 10))
  (lambda (x) (* x x))
  (lambda (x) (+ x 1))
  1)

En général, (déplier p semences) est fondamentalement

(loop for x = seed then (g x) until (p x) collect (f x))

Modifier: corriger une faute de frappe

Autres conseils

Common lisp hyperspec ne définit pas de fonction deploye , mais vous pouvez certainement écrire la vôtre. Sa définition de schéma traduit presque symbole pour symbole.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top