Higher-order functions in Elisp

后端 未结 3 725
盖世英雄少女心
盖世英雄少女心 2021-02-14 08:56

I created a function that returns a function in Elisp:

(defun singleton-set (elem)
  (defun f (n) (= n elem))
  f)

I try to run this in IELM, a

3条回答
  •  我在风中等你
    2021-02-14 09:32

    From the NEWS for Emacs 24:

    Lisp changes in Emacs 24.1

    • Code can now use lexical scoping by default instead of dynamic scoping. The lexical-binding variable enables lexical scoping for local variables. It is typically set via a file-local variable in the first line of the file, in which case it applies to all the code in that file.

    So, in Emacs 24:

    (setq lexical-binding t)
    (defun singleton-set (elem) (lambda (n) (= n elem)))
    (mapcar (singleton-set 1) '(0 1 2 3))
        ===> (nil t nil nil)
    

提交回复
热议问题