[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [bep] learning lisp



井上です。
実は似非lisperもいっしょに勉強させていただいていたりするので、わかるとこ
ろだけ。

From: Reiko TAKAHASHI <HFC03614@...>
Subject: Re: [bep] learning lisp
Date: Thu, 31 May 2001 07:32:16 +0900

> 「リスト」というのは何ですか?

atomが()の中につながったもの・・・?
'(setq x 10)
は三つのatomからなるlist?

>  「変数」と「文字列」の違いは、どのように判断されますか?
> 1文字なのが変数で、2文字以上が文字列……でしょうか?

変数には数値、文字、文字列、'yなどの別のシンボルを入れることができます。
数値は1, 3.14など
文字は ?a ?bなどとあらわされます。
文字列は"a", "abc", "3.14", "GNU Emacs"などの「文字の列」
変数にはほかの値を束縛(bind)することができますが、数値や文字列は定数と言
われるものでそれになにかをbindすることはできません。

> (setq x 'y) → y
> 
>  変数xそのものに、yという変数と同じ意味を持たせる。

これの意味を理解するのが難しかったのですが、そういうことみたいですね。

> } (setq a 10) → 10
> } (let (a) (setq a 20)) → 20
> } a → 10
> } 
> } となります。2行目の setq で使われている a は let の中だけで有効です。
> } ですから let を抜けた後の3行目で a を評価すると、1行目の結果が再び使わ
> } れます。
> 
>  なぜ、(let (a) (setq a 20))の最初のaが括弧でくくられているのでしょう?

(let 一時的な束縛指定 やりたいこと
という決まりになっていて、
一時的な束縛指定は
(a) → aという変数をletの中だけで周りに影響を与えずに(ローカルに)宣言する。
((a 10) (b 20)) →letの中だけでaを10に、、bを20に束縛する。
((a (point))) →letの中だけでaを(point)の結果、つまり現在のカーソル位置
に束縛する。
みたいに使います。

# r高橋さんにそのうち教わることになりそう

--
                                        Koichi Inoue, ARGV
                                        E-Mail: inoue@...