Frage

Ich habe gelernt, ziemlich viel Schema von SICP sondern bin mehr daran interessiert, in Common Lisp jetzt. Ich weiß, Common Lisp ist fold reduce ist, mit speziellen Argumente für links oder rechts Falten, aber was ist das Äquivalent von unfold? Googeln hat sich nicht viel geholfen. In der Tat habe ich den Eindruck nicht entfalten gibt es ???

War es hilfreich?

Lösung

Common Lisp hat (loop ... collect ...). Vergleichen

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

mit dessen Gleichwertigkeit mit unfold:

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

Im Allgemeinen (unfold p f g seed) ist im Grunde

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

Edit: fix Typo

Andere Tipps

Die gemeinsame Lisp hyperspec wird nicht definiert, eine unfold Funktion, aber man kann sicherlich Ihre eigenen schreiben. Sein Schema Definition übersetzt fast Symbol für Symbol.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top