【问题标题】:elisp Invalid function: (quote a)elisp 无效函数:(引用 a)
【发布时间】:2016-02-01 14:31:32
【问题描述】:

由于我是 elisp 语言的新手,我为 elisp 编写了以下代码。

当我评估它时,它失败了。

回显区显示错误“our-member: Invalid function: (quote a)”

我也对 lisp 语言的基本元素感到困惑。

'a 不是 obj 或列表吗?什么是列表定义,因为我在 wiki 和 google 上找不到。

(defun our-member(obj list)
  (if (nil list)
      nil
    (if (eql (car list) obj)
        list
      (our-member obj (cdr list)))))

(our-member('a '(a b c)))

【问题讨论】:

  • 检查nil 值的函数称为null。您的代码可以简化为(if (or (null list) (eql (car list) obj)) list ...
  • @tripleee 是的,我已经发现该函数既不为空也不为空。谢谢!

标签: elisp


【解决方案1】:

Lisp 中的函数调用看起来像 (function arguments) 而不是 (function (arguments))。您会发现,后者也在尝试将 arguments 作为函数运行。

Emacs 带有优秀的文档; Lisp 的数据类型记录在 http://www.gnu.org/software/emacs/manual/html_node/elisp/Lisp-Data-Types.html 但可能从更温和的介绍开始,它也涵盖了基本语法; https://www.gnu.org/software/emacs/manual/eintr.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-09
    • 2018-05-11
    • 2011-01-27
    • 2012-09-28
    相关资源
    最近更新 更多