1
나는 람다 함수를 이해하지 못한다.lisp에 관한 질문 Lisp의 Land의 예제에서 Lambda 함수들
(defun edges->dot (edges)
(mapc (lambda (node)
(mapc (lambda (edge)
(fresh-line)
(princ (dot-name (car node)))
(princ "->")
(princ (dot-name (car edge)))
(princ "[label=\"")
(princ (dot-label (cdr edge)))
(princ "\"];"))
(cdr node)))
edges))
그냥 지금 여기에 내부를 살펴 보자 :
(mapc (lambda (edge)
(fresh-line)
(princ (dot-name (car node)))
(princ "->")
(princ (dot-name (car edge)))
(princ "[label=\"")
(princ (dot-label (cdr edge)))
(princ "\"];"))
(cdr node)))
내가 기능 mapc
는 두 개의 인수, 함수 및 소요 것으로 알고 여기에 리스프의 책 땅에 들어있는 예제 기능입니다 목록. 또한 lambda (node)
을 사용하여 하나의 인수 (node
)를 첫 번째 인수로 사용하는 mapc
의 익명 함수를 전달하고 mapc
의 두 번째 인수로 (cdr node)
을 사용한다는 것을 이해합니다. 적어도 나는 그것이 계속되고 있다고 생각한다!
익명의 기능이 edge
의 값을 (lambda (edge)
에 가져 오는 부분이 어디인지 이해할 수 없습니다. 누군가가 나에게 설명해 주시면 감사하겠습니다.
좋아, 그래서 MAPC의 첫 번째 인수 만의 함수이어야한다는 말을 올바른 것 하나의 논쟁? – MikeJerome
@MikeJerome : 하나의 목록을 전달하는 경우 수정하십시오. 일반적으로 함수는 전달할 목록만큼 많은 인수를 사용합니다. –
멋지다. 지금은 이해합니다. 도와 주셔서 감사합니다. – MikeJerome