Verwirrt über '' ql: quickload '' und ausführbare Skripte in SBCL

8

Ich habe versucht, Quicklisp-Pakete in einem ausführbaren Skript von mir zu verwenden. Ein (triviales) Arbeitsbeispiel ist:

%Vor%

Nachdem chmod die Datei mit diesem Code ( test.lisp ) genannt hat, habe ich versucht, sie auszuführen. Ich habe dann jedoch folgende Fehlermeldung erhalten:

%Vor%

Ich bin mir nicht sicher, was hier vor sich geht - wenn ich versuche, etwas Ähnliches vom Toplevel aus zu machen (zB SBCL starten, lisp-unit mit ql:quickload laden, usw.), bekomme ich so etwas nicht.

    
Koz Ross 15.09.2014, 23:09
quelle

2 Antworten

10

In SBCL lädt --script Ihre Init-Dateien nicht. Wenn Sie Quicklisp verwenden möchten, müssen Sie das Laden veranlassen. Das bedeutet in der Regel etwas wie (load "~/quicklisp/setup.lisp") , bevor Sie etwas verwenden, das mit Quicklisp in Verbindung steht.

Ich denke nicht, dass SBCL und Quicklisp für Scripting-Aufgaben geeignet sind. Wenn ich Skripte schreibe, erwarte ich normalerweise nicht, dass sie Sachen aus dem Internet holen wie ql:quickload . Quicklisp ist auch ziemlich ausführlich. SBCLs FASL-Laden ist ziemlich langsam. Zusammengenommen ergibt das keine sehr gute Skripterfahrung.

Ich bevorzuge es sehr, alles, was ich brauche, in eine Common-Lisp-Sitzung zu laden und dann Funktionen aufzurufen, um Dinge zu erledigen. Wenn ich das nicht benutzen kann (wie zum Beispiel zum Ausführen von Sachen aus Cron oder aus einem Makefile), benutze ich oft Buildapp, um ausführbare Dateien zu erstellen.

    
Xach 15.09.2014, 23:23
quelle
1

Sie sollten cl-launch in Erwägung ziehen, das für diesen Zweck erstellt wurde. Sie können Quicklisp aktivieren, indem Sie die Option -Q übergeben. Ihr Beispielcode wäre etwa so:

%Vor%     
PuercoPop 16.09.2014 07:57
quelle

Tags und Links