이 놀라운 책 "리스프의 땅"에서 예를 들어, 일부 소스 코드입니다 여러 줄로 함수 속보 :여기
(defun random-node()
(1+ (random *node-num*)))
(defun edge-pair (a b)
(unless (eql a b)
(list (cons a b) (cons b a))))
(defun make-edge-list()
(apply #'append (loop repeat *edge-num*
collect (edge-pair (random-node) (random-node)))))
나는 리스프 본능을 가지고 있지 않기 때문에, 나는 그것을 찾을 메서드를 여러 줄로 (명령형으로) 분해 한 다음 함수형으로 변형하려고 할 때 유용합니다.
make-edge-list 기능을 여러 줄로 나눌 수있게 도와 주시겠습니까?
최소한 표현식의 구성 요소를 let 표현식으로 바꾸는 것이 도움이 될 수 있습니다. 여기에서 사용하는 정확한 방언이 확실하지 않지만 적어도 더 자세한 설명 형식으로 분류 할 수 있어야합니다. '(let (pair (edge-pair (임의 노드) (랜덤 노드))) (...'등등. – Ashe
뭔가 빠졌습니까? 처음 두 단계로 처리해야 할 이유가 있습니까? (루프 반복 * edge-num * append (edge-pair (임의 노드) (랜덤 - 놈)))?)'? – Ken