1
我不太瞭解lambda函數。下面是Lisp語言的書土地爲例功能:關於Lisp Lambda函數的問題來自Lisp Land的示例
(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
的第一個參數,而(cdr node)
將用作mapc
的第二個參數。至少我認爲這是怎麼回事!
我不明白的是我的匿名函數在(lambda (edge)
中得到edge
的值。如果有人能向我解釋這一點,我將不勝感激。
好了,所以這將是正確地說,MAPC的第一個參數必須是唯一的功能一個論據? – MikeJerome
@MikeJerome:正確的,如果你通過一個列表。一般來說,你的函數需要的參數和你傳入的列表一樣多。 –
很酷,我現在明白了。謝謝您的幫助。 – MikeJerome