2016-12-01 2 views
2

Meine folgenden Code-Schnipsel geben SB-INT: SIMPLE-READER-PACKAGE-ERROR; Ich weiß, dass das Paket "quicklisp-quickstart" noch nicht definiert ist, während REPL den Code liest; Aber das Paket ist in "quicklisp.lisp" definiert.Wie dynamische Belastung (Load) in gemeinsamen Lisp durchzuführen

Wie kann ich den folgenden Code arbeiten lassen? Oder Wie kann ich dem allgemeinen Lispreader mitteilen, dass dieses Paket in der dynamisch geladenen Datei definiert wird?

* (let ((quicklisp-init (merge-pathnames "quicklisp/setup.lisp" 
             (user-homedir-pathname)))) 
    (if (probe-file quicklisp-init) 
    (load quicklisp-init) 
    (progn 
     (load "quicklisp.lisp") 
     (quicklisp-quickstart:install)))) 

debugger invoked on a SB-INT:SIMPLE-READER-PACKAGE-ERROR in thread 
#<THREAD "main thread" RUNNING {100299C6A3}>: 
    Package QUICKLISP-QUICKSTART does not exist. 

    Stream: #<SYNONYM-STREAM :SYMBOL SB-SYS:*STDIN* {100017F893}> 

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

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

Haben Sie Probleme bei der Installation der Quicklisp? Wenn nicht, wäre es informativer zu beschreiben, was Sie erreichen möchten und welche Schritte Sie unternommen haben. Wenn ja, sind Sie dem https://www.quicklisp.org/beta/ Schritt-für-Schritt-Leitfaden gefolgt? – cybevnm

+2

Vielleicht '(eval (read-from-string) (quicklisp-quickstart: install)")) ". – coredump

+0

NB Quicklisp Setup-Seite zeigt ein Beispiel genau dies zu tun, und es wird anbieten, es zu Ihrem .sbclrc oder gleichwertige Startup-Datei bei der Installation hinzufügen ... – BRFennPocock

Antwort

6

können Sie FIND-SYMBOL verwenden, um zu versuchen und die Funktion, und rufen Sie es mit FUNCALL zu finden. Etwas wie

(let* ((package (find-package :quicklisp-quickstart)) 
     (function (unless (null package) 
        (find-symbol (string '#:install) 
           package)))) 
    (if (null function) 
     (error "Can't install...") 
     (funcall function))) 
+0

Funktioniert einfach wie ein Charme. Vielen Dank. –

Verwandte Themen