2010-03-14 15 views
7

के साथ समस्याएं मैंने asdf-install के साथ स्टील बैंक कॉमन लिस्प में ltk स्थापित किया है, लेकिन मैं इसे V_V का उपयोग शुरू भी नहीं कर सकता। नीचे दिया गया कोड दस्तावेज में सबसे सरल उदाहरण है, और लगभग verbatim की प्रतिलिपि बनाई गई है।ltk (सामान्य 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

एर .. हाँ यह था, धन्यवाद – Silvanus

उत्तर

5

आप पैकेज आप इसे में काम करना चाहता हूँ में प्रतीकों आयात करने के लिए है

सामान्य "उपयोगकर्ता" पैकेज cl-user है, और एक "कुंवारी" छवि आपको वहां रखेगी। किसी अन्य पैकेज से (निर्यात किए गए) प्रतीकों को आयात करने के लिए, (use-package :another-package) जारी करें। आरईपीएल पर उदाहरण:

(asdf:load-system :ltk) 
(use-package :ltk)

कभी-कभी कोई उन प्रतीकों का उपयोग करना चाहता है जो आयात नहीं किए जाते हैं। फिर आप उन्हें bar:foo जैसे पैकेज के साथ उपसर्ग कर सकते हैं, जहां bar पैकेज का नाम और foo प्रतीक है।

वास्तविक सिस्टम पर काम करते समय, आप आमतौर पर इसके लिए एक या अधिक पैकेज परिभाषित करेंगे। यह defpackage माध्यम से किया जाता है, जो आपको बता सकता है क्या अन्य पैकेज सीधे आयात करने के लिए:

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

उसके बाद, आप उस पैकेज पर स्विच करना:

(in-package #:my-app)

जब कई के साथ एक अधिक जटिल प्रणाली की स्थापना परस्पर निर्भर फाइलें, एक सिस्टम परिभाषा सुविधा सार्थक हो जाती है। वर्तमान में सबसे व्यापक रूप से उपयोग किया जाने वाला ASDF है, हालांकि कुछ हद तक विकल्प मौजूद हैं।

+0

आईआईआरसी एलटीके पैकेज में एलटीके-उपयोगकर्ता को डेमो चलाने के लिए परिभाषित करता है। – PuercoPop

0

ASDF आम लिस्प-उपयोगकर्ता पैकेज में एक पैकेज लोड नहीं करता है:


(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:।। आह, और अब मैं आपका जवाब देखता हूं :) –