slime v.2014-04-27 sbcl v.1.2.0 lisp in-package在编译和加载命令C-c C-k后不会改变* package *

时间:2014-06-16 10:12:19

标签: sbcl slime

这是代码:

(defpackage :morse
  (:use :common-lisp))

(in-package :morse)
...

当我使用C-c C-k(编译/加载文件)时:

CL-USER> *package*
#<PACKAGE "COMMON-LISP-USER">
; compiling file "/home/frederik/Lisp/Code/mycode/marco_baringer.lisp" (written 16 JUN 2014 11:30:15 AM):

; /home/frederik/Lisp/Code/mycode/marco_baringer.fasl written
; compilation finished in 0:00:00.025
CL-USER> *package*
#<PACKAGE "COMMON-LISP-USER">
CL-USER> 

我仍处于打包状态&#34; COMMON-LISP-USER&#34;当命令&#34;(in-package:morse)&#34;在源代码中给出。我应该在&#34; MORSE&#34;我想因为当我在REPL中发出命令时:

...
CL-USER> (in-package :morse)
#<PACKAGE "MORSE">
MORSE> *package*
#<PACKAGE "MORSE">
MORSE> 
...

有什么想法吗?我错了吗?

1 个答案:

答案 0 :(得分:0)

来自:Nick Levine ravenbrook.com&gt; 主题:Re:SLIME编译和加载文件REPL停留在&#34; CL-USER&#34; with&#34;(in-package:xyz)&#34;在代码而不是&#34; XYZ&#34; 新闻组:gmane.lisp.slime.devel 日期:2014-06-17 08:12:34 GMT(15分钟前)

  

来自:Frederik Cheeseman evonet.be&gt;   日期:2014年6月17日星期二07:54:20 +0000(UTC)

     

当我做C-c C-k(SLIME编译/加载文件)时,REPL保持在   &#34; CL-USER&#34 ;.不应该切换到&#34; MORSE&#34;因为   &#34;(包装内:莫尔斯)&#34;代码行?

否(这一般适用于CL,而不仅仅适用于SLIME)。这是 因为,根据规范,&#34;加载绑定可读 在加载文件之前它们持有的值。&#34;实际上:

(defun load (file &key ...)
  (let ((*package* *package*))
    (in-load file ...)))
  • 名词