[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [bep] learning lisp
- To: bep@argv.org
- Subject: Re: [bep] learning lisp
- From: Koichi INOUE <inoue@argv.org>
- Date: Thu, 31 May 2001 08:59:42 +0900 (JST)
- Delivered-To: mailing list bep@argv.org
- Mailing-List: contact bep-help@argv.org; run by ezmlm
井上です。
実は似非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@...