Я хотел бы знать, каков общий подход к интерактивной разработке на common-lisp в emacs (я использую sly, но я думаю, что инструкции по слизи должны быть такими же)
скажем, у меня есть этот файл:
(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
. - person Barmar   schedule 12.11.2020