Emacs で何かの値段でも,カロリーでも,何でもいいや,何かをリストアップしているとします.
1435 1350 2300 1350
急に合計したくなりました.ただし Emacs しか使えません.さてどうしますかね.
これだけなら lisp interaction に移って
(+ 1435 1350 2300 1350 )
とかするのが楽かな.
じゃあ,品名も書いてたらどうしましょう.
a 1435 b 1350 c 2300 d 1350
kill-rectangle/yank-rectangle でいいじゃん,てのは敗北くさいので,ちっと関数でも書きますかね.
(defun tmp-sum2 (xs) (if (null xs) 0 (+ (cadr xs) (tmp-sum2 (cddr xs))))) (tmp-sum2 '( a 1435 b 1350 c 2300 d 1350 ))
2 列の代わりに n 列にするとか,n 列の m 列めにするとか,いろいろ一般化できるけど,nthcdr 使えばいいだけなので省略.
じゃあ,単価と数量だとしてみようか.
a 1435 2 b 1350 1 c 2300 1 d 1350 5
んー,こうか.
(defun tmp-sp23 (xs) (if (null xs) 0 (+ (* (cadr xs) (car (cddr xs))) (tmp-sp23 (nthcdr 3 xs))))) (tmp-sp23 '( a 1435 1 b 1350 2 c 2300 4 d 1350 2 ))
何か機械的拡張になってきたな.飽きた.
こういうことをもっとお手軽にできるものって,Emacs にはないのかな.あるいは elisp でもっと簡潔に書けたりするんだろうか.
dismal っていう表計算パッケージがあるらしいけど,ちょっと求めているものとは違う感じ.
最終更新時間: 2009-01-04 15:31