문제

나는 SICP로부터 약간의 계획을 배웠지 만 현재 Common LISP에 더 관심이 있습니다. 나는 일반적인 lisp를 알고 있습니다 fold ~이다 reduce, 왼쪽 또는 오른쪽 접기에 대한 특별한 논쟁이 있지만 동등한 것은 무엇입니까? unfold? 인터넷 검색은 그다지 도움이되지 않았습니다. 사실 나는 인상을 얻지 못했습니다.

도움이 되었습니까?

해결책

일반적인 LISP가 있습니다 (loop ... collect ...). 비교하다

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

동등성을 사용하여 unfold:

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

일반적으로 (unfold p f g seed) 기본적으로입니다

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

편집 : 오타 수정

다른 팁

일반적인 LISP hyperspec은 an을 정의하지 않습니다 unfold 기능이지만 확실히 자신의 글을 쓸 수 있습니다. 체계 정의는 상징의 거의 상징을 번역합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top