[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
learning lisp: defun
- To: bep@argv.org
- Subject: learning lisp: defun
- From: TAKAHASHI Naoto <ntakahas@m17n.org>
- Date: Fri, 1 Jun 2001 14:59:56 +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)
今度は defun です。
> } プログラムとして用いられているリストの中ならば、最初の要素が関数でそれ
> } 以外が変数です。使われ方によって同一のシンボルが変数にも関数にもなりま
> } す。例を出しましょう。
> }
> } (defun (x) (* x 2))
> } (setq x 3)
> }
> } とすると、
> }
> } x → 3
> } (x 1) → 2
> } (x 2) → 4
> } (x 3) → 6
> } (x x) → 6
> }
> } となります。最後の (x x) はわかりますか?
> また例の本からの拾い読みなのですが、defunは、関数(コマンドとか?)を作
> りたいときに使うものですよね……??
あ、済みません。この部分は坂本さんへのリプライだったので、説明抜きで
defun を使ってしまいました。
> 本に書かれていた例は、ぜーんぶdefunの後に「関数名」みたいなものが書かれて
> いました(my-modeとか、hello-worldとか)。
1文字のxだって立派な関数名です。+ とか - も関数名です。-=+*+=- なんて
関数だって作れます。わかりにくいからやめた方がいいと思いますけど。
> (defun (x) (* x 2))
> と書いた場合、
> (x)が「引数リスト」、
> (* x 2)が「定義本体」
> と考えていいですか?
そのとおりです。
> (setq x 3)
> xそのものに3を束縛する。
正解。
> x → 3
> 3が束縛されているので、xを評価した結果は3。
正解。
> (x 1) → 2
> (* x 2)のほうのxに1を入れているのかな……と思うのですが、3はどこへ行っ
> たんでしょう……?
xに限らず、任意のシンボルは変数としての値と関数としての定義を両方同時
に持つことができます。
> ここでのxは、「最初のx」なので、単なる「関数」((* x 2))だということです
> か?
そうです。
> でもでも、そうしたら、最初の
> x → 3
> はどうして3なのでしょう?
関数ではなくて変数として評価されているからです。
xの周りに括弧がついていない点に注意して下さい。
> (x 2) → 4
> (x 3) → 6
> それぞれ、(* x 2)のxに、2と3を入れている……んですよね???
正解。
> } (x x) → 6
> 書いてくださったように「最初の要素が関数でそれ以外が変数」と考えると、
> 最初のxは、(* x 2)という関数、
> 次のxは、3が束縛されたx、
> ということになるでしょうか?
大正解。
> 解説ありがとうございます。
> 「束縛」と聞いて、"bind"よりもずうっと厳めしい雰囲気を想像していました(
> ほんとうは"bind"も厳めしいのかもしれませんが)。
> 最近、キーボードの配列を返るソフトの説明を読んでいて、「キーバインド」と
> いう用語(?)をたくさん見ました。
> 「関係づける」というか、あるキーにある役割(文字とか)を「結びつける」み
> たいな雰囲気かなと思っていました……。
そんなところだと思います。誰がどうして evaluate を「評価する」と訳した
のかは知りません。中西先生あたりでしょうか。
> 「某アニメ」は、大・大ファンな友だちがいるのですが、私は全然知りません。
> 1、2年前、真夜中にも放送されていましたよね……?
> もしや、このmlでも話題になったことがあるのでしょうか(信じられない!(^_^)
> )
放送されていたのが丁度外国にいた時期なので、私はアニメ自体は一度も見た
ことがありません。にもかかわらずファンが作った Web ページはずいぶん見
て回ったので、登場人物やストーリーは知っていたりします。
あれに関しては守岡さんが詳しいはずです。あれ関係のページを作って Yahoo
のクールサイトに認定されたくらいあれですから。
--
TAKAHASHI Naoto
ntakahas@...
http://www.m17n.org/ntakahas/