やっぱLispだな。数と数の区切りがスペースでいいから打つのが楽。
Emacsを起動したまへ。*scratch* バッファですぐに
Lispインタプリタが利用できる。おもむろに、
(+ 1 2 3 4 5 6)
と打って C-j をタイプする。はい結果が出てきたアルヨ。
+ を打つのが一回でいいしスペースで区切れるから
さくさく入力できるアルネ。
てなわけで、現在大量に採点中なのであった。平均点、最高点、最低点
を見たくなったので *scratch* バッファにこんな風に
書き込んだ。
(let*((p '(1 2 3 4 5 6))
(n (length p))
(s (apply '+ p)))
(format "av=%f, max=%d, min=%d"
(/ s (float n)) (apply 'max p) (apply 'min p)))
let* は局所変数の宣言。let に
* 印を付けると宣言中に使っている変数がその後の
宣言で使える。apply は、第1引数に関数を指定して、
その関数に第2引数以後のリストを開いた引数を渡して評価する。
むずいね:-) 要するに (apply '+ p) としたら
(apply '+ '(1 2 3 4 5 6)) ↓ (+ 1 2 3 4 5 6)
のようにリストを展開して + 関数に渡してくれる。
あら便利。
ま、ここまでやんなくても電卓代わりに Emacs なんか使うと
かちょええですよ。1 + 2 * 3 だったら
(+ 1 (* 2 3)) C-j
てなぐあい。ほんでわ。