일반적인 LISP의 "전개"?
-
06-07-2019 - |
문제
나는 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
기능이지만 확실히 자신의 글을 쓸 수 있습니다. 체계 정의는 상징의 거의 상징을 번역합니다.
제휴하지 않습니다 StackOverflow