2010/10/12

Emacs Lisp の cl package には loop マクロがあるので、取りあえず fold もどきを定義

loop マクロに慣れないので、取りあえずその場しのぎ的に fold を。。
(defun fold1 (proc seed ls)
  (loop for e in ls
     for acc = seed then (funcall proc e acc)
     finally (return acc)))

そういえば、先日知ったんですが、M-x ielm で Emacs Lisp の REPL が立ち上がるみたいですね。
ELISP> (fold1 #'* 1 '(1 2 3 4 5))
120
ELISP> (fold1 #'cons '() '(1 2 3 4 5))
(5 4 3 2)

あと unfold と pair-fold 辺りを用意しとけばある程度困らないかも・・・?

Emacsテクニックバイブル ~作業効率をカイゼンする200の技~

0 件のコメント:

コメントを投稿