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

Re: [bep] learning lisp: let



n高橋です。井上さんが全部解説してくれたので、周辺だけをちょっと。

Koichi INOUE writes:

>> (let (a) (setq a 123) (print a))
>> と書いてC-jすると、
>> 123
>> 123
>> と二回表示されます。
>> (私のところでは、(setq ...)だけでも、返された値を表示してしまうみたいで
>> す……。)

> lisp-interaction-modeでC-jすると、評価した結果がバッファの挿入されます。
> だから、123が2回でてくるのは、
> 1回目はprintという関数の副作用
> 2回目は式全体の結果
> です。最後に評価されるprintという関数がプリントした値を返すからでしょう。
> setqで値が表示されるのもそういうわけです。

2回表示されて評価と副作用がまぎらわしいようだったら、C-j の代わりに 
C-x C-e として下さい。評価された結果は *scratch* の中ではなく、エコー
エリア (画面最下段) に出るようになります。副作用である print の出力は
そのまま *scratch* に入ります。

> # 自分でチェックしながら書いていると時間がかかりますね。N高橋さんにおま
> #   かせするべきなのかも。

井上さんが解説してくれると私は楽です。(笑)

Koichi INOUE writes:

> おっと、プログラム初心者に再起は結構つらいかも。。
> # 坂本さんはがんばって!

おっと、漢字が違ってますね。「再起」ではなくて「再帰」です。英語では 
recursive となります。「再帰」の代わりに「頭山」(あたまやま)という訳語
も考案されたようですが、普及しませんでした。

ちなみに「頭山」は古典落語の一つです。知らない人は調べてみると面白いか
もしれません。

-- 
TAKAHASHI Naoto
ntakahas@...
http://www.m17n.org/ntakahas/