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

Re: [bep] learning lisp



 高橋です。
……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)
**-***-***-***-***-***-***-***-***-***-***-***-**