1
ラムダ関数をあまり理解していません。lispに関する質問Lispの例の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))
のは、ちょうど今のところ、ここで内側の部分を見てみましょう::ここでは書籍のLispの土地から例の機能がある
(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)
を使用すると、1つの引数(node
)を最初の引数としてmapc
に渡し、(cdr node)
がmapc
の2番目の引数として使用されることを理解しています。少なくとも私はそれが起こっていると思う!
わからないことは、私の無名関数がedge
の値を(lambda (edge)
に設定するところです。誰かがこれを私に説明してもらえれば嬉しいです。
わかりましたので、MAPCの最初の引数は唯一の関数でなければならないと言うことは正しいだろう一つの議論? – MikeJerome
@MikeJerome:あなたが1つのリストを渡しているなら、修正してください。一般に、あなたの関数は、あなたが渡しているリストと同じくらい多くの引数をとります。 –
クール、私は今理解しています。助けてくれてありがとう。 – MikeJerome