Emacs part 28
■ このスレッドは過去ログ倉庫に格納されています
0165名無しさん@お腹いっぱい。
2009/02/09(月) 10:37:29されない
>elispでの繰り返し
reduceやmapcarのような高階関数やloopマクロを使う
例:reduceをloopマクロで
(defun reduce (f a0 xs)
(loop with a = a0
for x in xs
do (setq a (funcall f a x))
finally (return a)))
(foldl '+ 0 '(1 2 3)) ; => 6
loopマクロはコンパイル時にwhileスペシャルフォームの形に変換されるので
コンパイルすれば効率もまずまず
ただしloopマクロもreduceも(require 'cl)しないと使えない
clパッケージには他にも有用なマクロや関数が定義されている
詳しくは(info "CL")を参照すること
■ このスレッドは過去ログ倉庫に格納されています