在Emacs

问题描述 投票:0回答:1

我从结构和解释书

尝试这个LISP片段
(define (a-plus-abs-b a b)
  ((if (> b 0) + -) a b))

C-X C-E或通过评估整个缓冲液。无论哪种方式 并获得回溯:

Debugger entered--Lisp error: (void-function define)
  (define (a-plus-abs-b a b) ((if (> b 0) + -) a b))
  (progn (define (a-plus-abs-b a b) ((if (> b 0) + -) a b)))
  eval((progn (define (a-plus-abs-b a b) ((if (> b 0) + -) a b))) t)
  elisp--eval-last-sexp(nil)
  eval-last-sexp(nil)
  funcall-interactively(eval-last-sexp nil)
  call-interactively(eval-last-sexp nil nil)
  command-execute(eval-last-sexp)

如果我尝试{evaluate-defun}我会得到一个不同的错误:符号的定义是无效的:define

评估片段的正确方法是什么?我应该在emacs外使用sth吗?

lisp common-lisp
1个回答
0
投票
这里的问题是SCIP使用了称为方案的LISP。这是一种与Emacs LISP不同的语言。主要区别是方案是LISP-1,因此变量和函数不能具有相同的名称,因此定义用于创建两者。虽然Emacs LISP是LISP -2,并且您可以具有具有相同名称的函数和变量,因此为变量定义一个函数和DEFUN,或者通常设置了一个setQ来设置变量值并在需要时定义它。

如果您想尝试SCIP,则需要获得方案解释器或可能的球拍并使用其方案语言模式。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.