Common lisp 使用SLIME在Aquamacs中编译SBCL defun时出现类型错误

Common lisp 使用SLIME在Aquamacs中编译SBCL defun时出现类型错误,common-lisp,sbcl,slime,aquamacs,Common Lisp,Sbcl,Slime,Aquamacs,这就是我试图编译的函数。它也是lisp文件中唯一的内容 (defun hello-world () (format t "hello world.")) 我正在尝试用“^C^C”编译函数。这是堆栈跟踪 The value NIL is not of type SB-C:POLICY. [Condition of type TYPE-ERROR] Restarts: 0: [ABORT] Abort compilation. 1: [*A

这就是我试图编译的函数。它也是lisp文件中唯一的内容

    (defun hello-world () (format t "hello world."))
我正在尝试用“^C^C”编译函数。这是堆栈跟踪

   The value NIL is not of type SB-C:POLICY.
       [Condition of type TYPE-ERROR]

    Restarts:
     0: [ABORT] Abort compilation.
     1: [*ABORT] Return to SLIME's top level.
     2: [ABORT] abort thread (#<THREAD "worker" RUNNING {1004247983}>)

    Backtrace:
      0: (SB-C::POLICY-TO-DECL-SPEC NIL T NIL)
          Locals:
            FORCE-ALL = NIL
            POLICY = NIL
            RAW = T
      1: (RESTRICT-COMPILER-POLICY NIL 0)
      2: (SWANK/SBCL::COMPILER-POLICY NIL)
      3: ((LABELS SWANK/SBCL::CF :IN SWANK/BACKEND:SWANK-COMPILE-STRING))
      4: ((FLET SWANK/BACKEND:CALL-WITH-COMPILATION-HOOKS :IN "/Users/colinmcd94/quicklisp/dists/quicklisp/software/slime-2.13/swank/sbcl.lisp") #<CLOSURE (LAMBDA NIL :IN SWANK/BACKEND:SWANK-COMPILE-STRING) {1..
      5: ((FLET SWANK/BACKEND:SWANK-COMPILE-STRING :IN "/Users/colinmcd94/quicklisp/dists/quicklisp/software/slime-2.13/swank/sbcl.lisp") "(defun hello-world () (format t \"hello world.\")) ..)
      6: ((LAMBDA NIL :IN SWANK:COMPILE-STRING-FOR-EMACS))
      7: ((LAMBDA NIL :IN SWANK::COLLECT-NOTES))
      8: (SWANK::MEASURE-TIME-INTERVAL #<CLOSURE (LAMBDA NIL :IN SWANK::COLLECT-NOTES) {1004258B2B}>)
      9: (SWANK::COLLECT-NOTES #<CLOSURE (LAMBDA NIL :IN SWANK:COMPILE-STRING-FOR-EMACS) {1004258AEB}>)
     10: (SWANK::CALL-WITH-BUFFER-SYNTAX NIL #<CLOSURE (LAMBDA NIL :IN SWANK:COMPILE-STRING-FOR-EMACS) {1004258AAB}>)
     11: (SB-INT:SIMPLE-EVAL-IN-LEXENV (SWANK:COMPILE-STRING-FOR-EMACS "(defun hello-world () (format t \"hello world.\")) ..)
     12: (EVAL (SWANK:COMPILE-STRING-FOR-EMACS "(defun hello-world () (format t \"hello world.\")) ..)
     13: (SWANK:EVAL-FOR-EMACS (SWANK:COMPILE-STRING-FOR-EMACS "(defun hello-world () (format t \"hello world.\")) ..)
     14: ((LAMBDA NIL :IN SWANK::SPAWN-WORKER-THREAD))
     15: (SWANK/SBCL::CALL-WITH-BREAK-HOOK #<FUNCTION SWANK:SWANK-DEBUGGER-HOOK> #<FUNCTION (LAMBDA NIL :IN SWANK::SPAWN-WORKER-THREAD) {1006B33B7B}>)
     16: ((FLET SWANK/BACKEND:CALL-WITH-DEBUGGER-HOOK :IN "/Users/colinmcd94/quicklisp/dists/quicklisp/software/slime-2.13/swank/sbcl.lisp") #<FUNCTION SWANK:SWANK-DEBUGGER-HOOK> #<FUNCTION (LAMBDA NIL :IN SWA..
     17: (SWANK::CALL-WITH-BINDINGS ((*STANDARD-OUTPUT* . #1=#<SWANK/GRAY::SLIME-OUTPUT-STREAM {1003B03FA3}>) (*STANDARD-INPUT* . #2=#<SWANK/GRAY::SLIME-INPUT-STREAM {1003A2C693}>) (*TRACE-OUTPUT* . #1#) (*ERR..
     18: ((LAMBDA NIL :IN SWANK::SPAWN-WORKER-THREAD))
     19: ((FLET #:WITHOUT-INTERRUPTS-BODY-1182 :IN SB-THREAD::INITIAL-THREAD-FUNCTION-TRAMPOLINE))
     20: ((FLET SB-THREAD::WITH-MUTEX-THUNK :IN SB-THREAD::INITIAL-THREAD-FUNCTION-TRAMPOLINE))
     21: ((FLET #:WITHOUT-INTERRUPTS-BODY-600 :IN SB-THREAD::CALL-WITH-MUTEX))
     22: (SB-THREAD::CALL-WITH-MUTEX #<CLOSURE (FLET SB-THREAD::WITH-MUTEX-THUNK :IN SB-THREAD::INITIAL-THREAD-FUNCTION-TRAMPOLINE) {820BCFB}> #<SB-THREAD:MUTEX "thread result lock" owner: #<SB-THREAD:THREAD "..
     23: (SB-THREAD::INITIAL-THREAD-FUNCTION-TRAMPOLINE #<SB-THREAD:THREAD "worker" RUNNING {1004247983}> NIL #<CLOSURE (LAMBDA NIL :IN SWANK::SPAWN-WORKER-THREAD) {100424792B}> (#<SB-THREAD:THREAD "worker" RU..
     24: ("foreign function: call_into_lisp")
     25: ("foreign function: new_thread_trampoline")
     26: ("foreign function: _pthread_body")
     27: ("foreign function: _pthread_body")
     28: ("foreign function: thread_start")
值NIL不是SB-C:POLICY类型。
[类型错误的条件]
重新启动:
0:[中止]中止编译。
1:[*中止]返回SLIME的顶层。
2:[中止]中止线程(#)
回溯:
0:(SB-C::策略到DECL-SPEC零T零)
当地人:
强制所有=零
策略=零
原始=T
1:(RESTRICT-COMPILER-POLICY NIL 0)
2:(SWANK/SBCL::编译器-策略零)
3:((标签SWANK/SBCL::CF:IN-SWANK/BACKEND:SWANK-COMPILE-STRING))
4:((FLET-SWANK/BACKEND:CALL-WITH-COMPILATION-HOOKS:IN)/Users/colinmcd94/quicklisp/dists/quicklisp/software/slime-2.13/SWANK/sbcl.lisp”)#运行
(sb ext:restrict compiler policy'debug)
是解决方法

老实说,我不知道为什么会这样,但它确实起作用了。

现在已经更新了,您可以使用
(ql:quickload:quicklisp slime helper)
更新您的
:quicklisp slime helper
,重新启动slime,然后就可以开始了


您可能需要运行
(ql:updateclient)
(ql:updateall dists)
首先,取决于上次更新后的时间长短。

这是目前正确的修复方法。我将其放在了.sbclrc中。这是因为SBCL中的API意外更改。SLIME已更新以解决此问题,但Quicklisp还没有最新的SLIME。Quicklisp将在下周用新SLIME进行更新。