echo Impossible|sed 's/Im/To be /'

May 08, 2015

Emacs Recursion in lambda in Elisp

Emacs Elisp 在 lambda 下使用 Recursion

Recursion 是 lisp 的天性,習慣後也愛上它的簡捷便利。但在 lambda 下如何作 Recursion 還真不知如何下手。

Stack Overflow - emacs - Recursion in lambda in Elisp 找到 labels [1] 這個線索,細看後謎團也就解決了。

Example

(message (format "%s"
(cl-labels
    ((my-ranges (s e sp)
                (if (< s e)
                    (cons s (my-ranges (+ s sp) e sp)))))
  (my-ranges 1 11 2))))

Message OutPut: '(1 3 5 7 9)
[1]Emacs 24.3 之後建議改用 cl-labels