関数を定義するには、defun と lambda の 2 つの方法があり、setf を使用して lambda 関数にラベルを付けることができます。
(defun g (x) (* x x))
(setf f (lambda (x) (+ x x)))
関数は、リストの最初の要素にすることができます。
(g 3)
9
または、他の関数のパラメーターにすることもできます。
(mapcar #'g '(1 2 3))
(1 4 9)
ただし、ラムダでは、使用方法が異なります。
(funcall f 3)
6
(mapcar f '(1 2 3))
(2 4 6)
違いの背後にあるロジックは何ですか?
スキームのかなり一貫した使用例と比較すると、さらに混乱します。
> (define (g x) (+ x x))
> (g 3)
6
> (map g '(1 3 4))
(2 6 8)
> (define f (lambda (x) (* x x)))
> (f 2)
4
> (map f '(1 2 3))
(1 4 9)