[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: Reiko TAKAHASHI <HFC03614@nifty.ne.jp> (高橋玲子)
- Date: Wed, 30 May 2001 07:31:32 +0900
- Delivered-To: mailing list bep@argv.org
- Mailing-List: contact bep-help@argv.org; run by ezmlm
高橋です。
……Lispの本、まだ最初の10文字ぐらいしか読んでません(^.^)。
なので、とーっても書きにくいのですが、
Reply Koichi INOUE <inoue@...>'s message:
} > (setq x (save-excursion (goto-char (point-max)) (goto-char 3)))
} >
} > (なんて書き方はできないかもしれませんが)みたいにしたとしたら、'x'の値は
} > 3、というか、保存されるカーソルの位置は3文字目になる……というようなこと
} > でしょうか?
}
} xの値は3になります。これはgoto-charが異動先の位置の値を返すからです。
} # 知らなかった。
} それはそうなのですが、今回は相手が悪かったですね。save-excursionなので、
} setqのレベルに戻ったときには(point)の値は元いた場所になっていると思いま
} す。
Reply TAKAHASHI Naoto <ntakahas@...>'s message:
} 上のような書き方はできますし、そうすればxには3が入ります。
} しかしどうやらまだ、
} ・S式を評価した結果として返される値
} (今までの言い方だと「関数を実行したときの値」)
} と、
} ・S式を評価したときに生じる副作用
} を混同なさっているようです。
はい、しっかり混同していました。評価結果の値が「捨てられる」なんて思っ
てもみなかったので。
ところで、'S式'というのはどういう意味ですか?
↑で書いてくださっている意味はわかるのですが、'S式'もLispの用語でしょうか
?(数学の常識的な用語だったらどうしよう……(^_^;;;))。
} その setq は主に副作用を利用するために用いられます。なぜなら変数に値を
} 束縛するというのも副作用の一つだからです。また setq は評価結果として束
} 縛された値を返します。ですから (setq y (setq x 30)) とすると、x と y
} の両方に30が束縛されます。if や while の条件判定部分で setq の返り値を
} 利用する場合があります。
返り値を利用するというのは、DOSのバッチファイルで使える'errorlevel'のよ
うな雰囲気ですよね?
変数に値を「束縛」するというのは、とても不思議です。
単なる「用語」なのかもしれませんが、どうして「束縛」なのでしょう……?
**-***-***-***-***-***-***-***-***-***-***-***-**
Reiko TAKAHASHI (高橋玲子)
E-mail: HFC03614@...
ICQ UIN: 85924121 (Twinkle)
**-***-***-***-***-***-***-***-***-***-***-***-**