2014-06-07 2 views
0

xubuntu에서 SBCL 1.0.55.0.debian과 함께 quicklisp을 사용하려고합니다. 지금까지 천천히 가고 있습니다. 약 절반의 시간 동안 라이브러리를로드 할 수 있습니다 (예 : (ql:quickload "cl-ppcre")).sbcl을 사용하는 Quicklisp : 다양한 라이브러리를로드 할 때 UNDEFINED-FUNCTION 오류가 발생합니다.

그러나 시간의 나머지 절반은, 내가 대신이 오류를 받고 있어요 (libxml2를, hunchentoot-CGI를로드하는 동안, 그리고 몇 가지 다른) : 나는 모든 시도했습니다

The function :NICKNAMES is undefined. 
[Condition of type UNDEFINED-FUNCTION] 

2 (승인)를 제외하고 다시 시작합니다. 이것은 emacs/SLIME과 REPL 모두에서 발생합니다. 나는 'sb-kernel'을위한 소스 파일이 어디에 있는지 정확히 알지 못하지만, 만약 내가 그렇게했다면 그것을 고치는 법을 알지 못한다. 어떤 제안?

:;

전체 (UPDATE 자신의 장소 문제를 해결 스와핑, 그러나 나는 처음부터 그 방법을 가지고 방법에 대한 궁금 라인 (:use :cl)package.lisp(:nicknames :alexandria) 라인 바로 아래에 있었다.) (hunchentoot-CGI에 대한) 추적은 다음과 같습니다 Xach 지적

The function :NICKNAMES is undefined. 
    [Condition of type UNDEFINED-FUNCTION] 

Restarts: 
0: [TRY-RECOMPILING] Recompile package and try loading it again 
1: [RETRY] Retry loading FASL for #<CL-SOURCE-FILE "alexandria" "package">. 
2: [ACCEPT] Continue, treating loading FASL for #<CL-SOURCE-FILE "alexandria" "package"> as having been successful. 
3: [ABORT] Give up on "hunchentoot-cgi" 
4: [RETRY] Retry SLIME REPL evaluation request. 
5: [*ABORT] Return to SLIME's top level. 
--more-- 

Backtrace: 
    0: (SB-KERNEL:%COERCE-CALLABLE-TO-FUN :NICKNAMES) 
    1: (SB-FASL::FOP-FUNCALL) 
    2: (SB-FASL::LOAD-FASL-GROUP ..) 
    3: ((FLET SB-THREAD::WITH-RECURSIVE-LOCK-THUNK :IN SB-FASL::LOAD-AS-FASL)) 
    4: ((FLET #:WITHOUT-INTERRUPTS-BODY-88923 :IN SB-THREAD::CALL-WITH-RECURSIVE-LOCK)) 
    5: (SB-THREAD::CALL-WITH-RECURSIVE-LOCK ..) 
    6: (SB-FASL::LOAD-AS-FASL ..) 
    7: ((FLET SB-FASL::LOAD-STREAM :IN LOAD) ..) 
    8: (LOAD ..) 
    9: (SB-IMPL::%MAP-FOR-EFFECT-ARITY-1 ..) 
10: ((SB-PCL::FAST-METHOD ASDF:PERFORM (ASDF:LOAD-OP ASDF:CL-SOURCE-FILE)) ..) 
11: ((SB-PCL::EMF ASDF:PERFORM) #<unavailable argument> #<unavailable argument> #<ASDF:LOAD-OP (:VERBOSE NIL) {10ABFD01}> #<ASDF:CL-SOURCE-FILE "alexandria" "package">) 
12: ((SB-PCL::FAST-METHOD ASDF::PERFORM-WITH-RESTARTS (ASDF:LOAD-OP ASDF:CL-SOURCE-FILE)) ..) 
13: ((SB-PCL::FAST-METHOD ASDF::PERFORM-WITH-RESTARTS :AROUND (T T)) ..) 
14: ((LAMBDA() :IN ASDF::PERFORM-PLAN)) 
15: ((FLET SB-THREAD::WITH-RECURSIVE-LOCK-THUNK :IN SB-C::%WITH-COMPILATION-UNIT)) 
16: ((FLET #:WITHOUT-INTERRUPTS-BODY-88923 :IN SB-THREAD::CALL-WITH-RECURSIVE-LOCK)) 
17: (SB-THREAD::CALL-WITH-RECURSIVE-LOCK ..) 
18: ((FLET SB-C::WITH-IT :IN SB-C::%WITH-COMPILATION-UNIT)) 
19: ((SB-PCL::FAST-METHOD ASDF::PERFORM-PLAN (LIST)) ..) 
20: ((LAMBDA() :IN ASDF:OPERATE)) 
21: (ASDF::CALL-WITH-SYSTEM-DEFINITIONS #<CLOSURE (LAMBDA # :IN ASDF:OPERATE) {108EF07D}>) 
22: ((SB-PCL::FAST-METHOD ASDF:OPERATE (T T)) #<unused argument> #<unused argument> ASDF:LOAD-OP "hunchentoot-cgi" :VERBOSE NIL) 
23: ((SB-PCL::EMF ASDF:OPERATE) #<unused argument> #<unused argument> ASDF:LOAD-OP "hunchentoot-cgi" :VERBOSE NIL) 
24: (QUICKLISP-CLIENT::CALL-WITH-MACROEXPAND-PROGRESS #<CLOSURE (LAMBDA # :IN QUICKLISP-CLIENT::APPLY-LOAD-STRATEGY) {108EEE4D}>) 
25: (QUICKLISP-CLIENT::AUTOLOAD-SYSTEM-AND-DEPENDENCIES "hunchentoot-cgi" :PROMPT NIL) 
26: ((SB-PCL::FAST-METHOD QL-IMPL-UTIL::%CALL-WITH-QUIET-COMPILATION (T T)) ..) 
27: ((SB-PCL::FAST-METHOD QL-IMPL-UTIL::%CALL-WITH-QUIET-COMPILATION :AROUND (QL-IMPL:SBCL T)) ..) 
28: ((SB-PCL::FAST-METHOD QUICKLISP-CLIENT:QUICKLOAD (T)) #<unused argument> #<unused argument> #<unavailable argument> :PROMPT NIL :VERBOSE NIL) 
29: (QL-DIST::CALL-WITH-CONSISTENT-DISTS #<CLOSURE (LAMBDA # :IN QUICKLISP-CLIENT:QUICKLOAD) {108CD455}>) 
30: (SB-INT:SIMPLE-EVAL-IN-LEXENV (QUICKLISP-CLIENT:QUICKLOAD "hunchentoot-cgi") #<NULL-LEXENV>) 
31: (EVAL (QUICKLISP-CLIENT:QUICKLOAD "hunchentoot-cgi")) 
32: (SWANK::EVAL-REGION "(ql:quickload \"hunchentoot-cgi\")\n") 
33: ((LAMBDA() :IN SWANK::REPL-EVAL)) 
34: (SWANK::TRACK-PACKAGE #<CLOSURE (LAMBDA # :IN SWANK::REPL-EVAL) {108CD12D}>) 
35: (SWANK::CALL-WITH-RETRY-RESTART "Retry SLIME REPL evaluation request." #<CLOSURE (LAMBDA # :IN SWANK::REPL-EVAL) {108CD0BD}>) 
36: (SWANK::CALL-WITH-BUFFER-SYNTAX NIL #<CLOSURE (LAMBDA # :IN SWANK::REPL-EVAL) {108CD0A5}>) 
37: (SWANK::REPL-EVAL "(ql:quickload \"hunchentoot-cgi\")\n") 
38: (SB-INT:SIMPLE-EVAL-IN-LEXENV (SWANK:LISTENER-EVAL "(ql:quickload \"hunchentoot-cgi\")\n") #<NULL-LEXENV>) 
39: (EVAL (SWANK:LISTENER-EVAL "(ql:quickload \"hunchentoot-cgi\")\n")) 
40: (SWANK:EVAL-FOR-EMACS (SWANK:LISTENER-EVAL "(ql:quickload \"hunchentoot-cgi\")\n") "COMMON-LISP-USER" 144) 
41: (SWANK::PROCESS-REQUESTS NIL) 
42: ((LAMBDA() :IN SWANK::HANDLE-REQUESTS)) 
43: ((LAMBDA() :IN SWANK::HANDLE-REQUESTS)) 
44: (SWANK-BACKEND::CALL-WITH-BREAK-HOOK #<FUNCTION SWANK:SWANK-DEBUGGER-HOOK> #<CLOSURE (LAMBDA # :IN SWANK::HANDLE-REQUESTS) {D2420C5}>) 
45: ((FLET SWANK-BACKEND:CALL-WITH-DEBUGGER-HOOK :IN "/home/amperry/.emacs.d/slime-2.7/swank-sbcl.lisp") #<FUNCTION SWANK:SWANK-DEBUGGER-HOOK> #<CLOSURE (LAMBDA # :IN SWANK::HANDLE-REQUESTS) {D2420C5}>) 
46: (SWANK::CALL-WITH-BINDINGS ..) 
47: (SWANK::HANDLE-REQUESTS #<SWANK::MULTITHREADED-CONNECTION {CBAE9B1}> NIL) 
48: ((FLET #:WITHOUT-INTERRUPTS-BODY-223578 :IN SB-THREAD:MAKE-THREAD)) 
49: ((FLET SB-THREAD::WITH-MUTEX-THUNK :IN SB-THREAD:MAKE-THREAD)) 
50: ((FLET #:WITHOUT-INTERRUPTS-BODY-88894 :IN SB-THREAD::CALL-WITH-MUTEX)) 
51: (SB-THREAD::CALL-WITH-MUTEX ..) 
52: (SB-THREAD::INITIAL-THREAD-FUNCTION) 
53: ("foreign function: call_into_lisp") 
54: ("foreign function: funcall0") 
55: ("foreign function: new_thread_trampoline") 
56: ("foreign function: #xB7FA6D4C") 
+0

나는 Common Lisp을 처음 사용하기 때문에 주저하지만 필자는 아마 알렉산드리아 패키지에 문제가있는 것처럼 보인다. 이것은 아마도 의존성 일 것이다. 설치 되었습니까? 다시 설치할 수 있습니까? – Dan

+2

오류는'alexandria'의'package.lisp' 파일에서옵니다. 그 파일은'(defpackage : alexandria.0.dev (: nicknames : alexandria) ... '로 시작합니다. 제 생각에는 첫 번째 줄이 없거나 손상되어 컴파일러가 두 번째 줄을 함수 호출로 해석하도록 인도합니다. ':/nicklames' 파일을 확인하십시오 :'~/quicklisp/dists/quicklisp/software/alexandria-20130128-git /'또는 그와 비슷한 경로에있는 파일을 확인하십시오 – jlahd

+3

그런 종류의 오류가 발생할 때 (defpackage foo (: nicknames bar))는 활성 패키지가 CL을 사용하지 않을 때 평가됩니다.이 경우 SOMEPACKAGE :: DEFPACKAGE가 함수로 취급되고 일반 함수 호출 당 인수를 평가하려고 시도합니다. – Xach

답변

0

으로, 활성 패키지 (:nicknames :alexandria)가 호출 된 시간에하지 (:use :cl)했다. 이 두 줄의 순서를 바꿔 가면서 문제가 해결되었지만, 그 순서가 왜 순서대로 이루어 졌는지 전혀 알지 못합니다.

관련 문제