【发布时间】:2021-02-24 17:54:12
【问题描述】:
想知道,emacs中common-lisp交互开发的常用方法是什么(我用的是sly,不过我觉得slime指令应该是一样的)
说我有这个文件:
(eval-when (:compile-toplevel :load-toplevel :execute)
(ql:quickload :closer-mop))
(in-package :cl-user)
(defpackage :shapes
(:use :closer-common-lisp-user)
(:export #:rectangle))
(in-package :shapes)
(defclass rectangle ()
((height :initform 0.0 :initarg :height)
(width :initform 0.0 :initarg :width)))
这很简单。 通过表达式评估它似乎没问题,而加载整个文件(C-c C-l)给我以下错误:
The variable SHAPES:RECTANGLE is unbound.
[Condition of type UNBOUND-VARIABLE]
将其分解为
(in-package :cl-user)
(defpackage #:shapes
(:use #:cl-user)
(:export #:rectangle))
(in-package #:shapes)
(defclass rectangle ()
((height :initform 0.0 :initarg :height)
(width :initform 0.0 :initarg :width)))
不做任何改变。
compile-and-load (C-c C-k) 也不起作用,只剩下:
; in: DEFCLASS RECTANGLE
; (SHAPES::DEFCLASS SHAPES:RECTANGLE NIL
; ((SHAPES::HEIGHT :INITFORM 0.0 :INITARG :HEIGHT)
; (SHAPES::WIDTH :INITFORM 0.0 :INITARG :WIDTH)))
;
; caught COMMON-LISP:STYLE-WARNING:
; undefined function: SHAPES::DEFCLASS
我看到 defclass 无法正确解析为从 cl-user:defclass,但看不到修复它的方法。
我想知道我错过了什么? 在 emacs 中进行交互开发的常见流程是什么?
【问题讨论】:
-
closer-common-lisp-user包不导出内置的 Lisp 函数。你也需要:use #'common-lisp。 -
也许有一个包 CLOSER-COMMON-LISP 代替
-
哇。您的两个答案都是正确的(不足为奇)。您能否将它们移至实际答案
标签: emacs common-lisp read-eval-print-loop slime