2008-05-02から1日間の記事一覧

Forth で無名関数の再帰

Perl で JS の arguments.callee 的なことしようと思ってハマった - IT戦記 の件を Forth で。Forth なら recurse がある。 :noname dup if dup . 1 - recurse else . then ; ok 10 swap ok .s <2> 10 47312420583688 ok execute 10 9 8 7 6 5 4 3 2 1 0 ok …

Common Lisp で無名関数の再帰

Common Lisp だとこんな感じ? (defmacro rlambda (lambda-list &body body) `(labels ((self ,lambda-list ,@body)) #'self)) (funcall (rlambda (n) (print n) (unless (zerop n) (self (1- n)))) 10) ん? むしろ引数に呼び出し元を持たせるのかな?