やっぱ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
てなぐあい。ほんでわ。