2010-03-14 3 views
7

Steel Bank Common Lisp에 ltk를 asdf-install과 함께 설치했지만 V_V로 시작할 수 없습니다. 아래의 코드는 문서에서 가장 간단한 예제이며 거의 그대로 복사됩니다.ltk (common lisp) 문제


> ; in: LAMBDA NIL 
;  (PACK B) 
; 
; caught STYLE-WARNING: 
; undefined function: PACK 

;  (WITH-LTK NIL 
;  (LET ((B (MAKE-INSTANCE 'BUTTON :MASTER NIL :TEXT "Press Me" :COMMAND #))) 
;  (PACK B))) 
; 
; caught STYLE-WARNING: 
; undefined function: WITH-LTK 
; 
; compilation unit finished 
; Undefined functions: 
;  PACK WITH-LTK 
; caught 2 STYLE-WARNING conditions 

debugger invoked on a SIMPLE-ERROR in thread #<THREAD "initial thread" RUNNING {1002A57B61}>: 
    There is no class named BUTTON. 

Type HELP for debugger help, or (SB-EXT:QUIT) to exit from SBCL. 

restarts (invokable by number or by possibly-abbreviated name): 
    0: [ABORT] Exit debugger, returning to top level. 

(SB-PCL::FIND-CLASS-FROM-CELL BUTTON NIL T) 
+0

첫 줄에 그냥 복사하여 붙여 넣기 오류가 있습니까? (나는 그렇게 생각합니다.) –

+0

Er .. 예, 감사했습니다. – Silvanus

답변

5

일반 "사용자"패키지는 cl-user이며, "처녀 (virgin)"이미지가 표시됩니다. 다른 패키지에서 (내 보낸) 기호를 가져 오려면 (use-package :another-package)을 실행하십시오. REPL의 예 :

때때로 가져 오지 않은 기호를 사용하려고합니다. 그런 다음 bar:foo과 같이 패키지 앞에 접두어를 붙일 수 있습니다. 여기서 bar은 패키지 이름이고 foo 기호입니다.

실제 시스템에서 작업 할 때 일반적으로 하나 이상의 패키지를 정의합니다. 이것은 직접 가져올 어떤 다른 패키지 말할 수있는 defpackage를 통해 이루어집니다 :

(defpackage #:my-app 
    (:use :cl 
     :ltk))

그런 다음, 해당 패키지로 전환해야합니다

(in-package #:my-app)

여러 가지로 더 복잡한 시스템을 설정 상호 의존적 인 파일이라면 시스템 정의 기능이 보람 있습니다. 현재 가장 널리 사용되는 것은 ASDF이지만, 몇 가지 대안이 있습니다.

+0

IIRC ltk는 데모를 실행할 패키지 ltk-user를 정의합니다. – PuercoPop

0

자위대는 COMMON-LISP-USER 패키지로 패키지를로드하지 않습니다

(asdf:operate 'asdf:load-op :ltk) 

(defun hello-1() 
    (with-ltk() 
    (let ((b (make-instance 'button 
          :master nil 
          :text "Press Me" 
          :command (lambda() 
             (format t "Hello World!~&"))))) 
    (pack b)))) 
(hello-1) 


내가 SBCL에서 얻을 오류 메시지입니다. 그 결과, 함께-LTK는 현재 패키지에 정의되지 않은, 그래서 당신은이 작업을 수행해야합니다. 당신은 당신이에서 작업 할 패키지에 기호를 가져와야합니다

(asdf:oos 'asdf:load-op :ltk) 
(in-package :ltk) 
;put your function here 
+0

라이브러리 패키지 작업을 권장하지 않습니다. – Svante

+0

@Svante : Ah, 그리고 지금 나는 당신의 대답을 보았습니다 :) –

관련 문제