[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [bep] weather
- To: bep@argv.org
- Subject: Re: [bep] weather
- From: TAKAHASHI Naoto <ntakahas@m17n.org>
- Date: Tue, 22 May 2001 13:01:12 +0900 (JST)
- Delivered-To: mailing list bep@argv.org
- Mailing-List: contact bep-help@argv.org; run by ezmlm
- User-Agent: SEMI/1.14.3 (Ushinoya) FLIM/1.14.2 (Yagi-Nishiguchi) APEL/10.2 Emacs/21.0.104 (sparc-sun-solaris2.8) MULE/5.0 (SAKAKI)
Koichi INOUE writes:
> lambda()の方は実はよく分かってません。(^^;)
lambda は defun とほとんど同じですが、一時的に使うだけなので名前を付け
る必要のない関数を作るときに使います。本当のことを言うと lambda の方が
本質的で、defun というのはシンボル名に lambda 式を割り当てているだけだ
とも言えます。
(defun muimi (x y) (+ (* x 2) y))
==> muimi
(muimi 3 5)
==> 11
(symbol-function 'muimi)
==> (lambda (x y) (+ (* x 2) y))
ですから (muimi 3 5) の muimi を (lambda (x y) (+ (* x 2) y)) で置き換
えても
((lambda (x y) (+ (* x 2) y)) 3 5)
==> 11
と同じ結果が得られます。
また、function は quote とほとんど同じです。
(symbol-function (function muimi))
==> (lambda (x y) (+ (* x 2) y))
ただ、一般のシンボルには quote を、関数名には function を使った方が、
バイトコンパイルした時の効率が上がります。
反対に、
...
(function (lambda () ... ))
...
となっている部分を
...
'my-function
...
(defun my-function () ...)
と書き直すこともできます。
--
TAKAHASHI Naoto
ntakahas@...
http://www.m17n.org/ntakahas/