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)
ん? むしろ引数に呼び出し元を持たせるのかな?
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)
ん? むしろ引数に呼び出し元を持たせるのかな?