Läuft eine Common Lisp-Funktion aus einer Terminal-Eingabeaufforderung
Bin ich mit einiger Mühe, eine Antwort auf diese, so ist es vielleicht nicht möglich ist. Ich würde gerne die Flexibilität, in der Lage, laden/kompilieren eine lisp-Datei aus einer Befehlszeile, d.h., nicht innerhalb von emacs und dann auch noch einen der lisp-Funktionen, die in dieser Datei auch von der Befehlszeile aus. Dies ist ohne Zweifel Umsetzung spezifische Funktion, so dass alle Zeiger, die auf eine Umsetzung, bietet diese (oder vielleicht ist es ziemlich standard ist, weiß ich nicht). Ich bin mit SBCL und wie es, also wäre es toll, wenn könnten Sie dies tun.
Auch ich bin mit Mac OSX und Terminal.
InformationsquelleAutor johnbakers | 2013-11-30
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die SBCL-Anleitung beschreibt drei praktische Optionen
Gegeben eine Datei
test.lisp
mit Inhaltdies können wir mit SBCL:
Den
(progn ... (sb-ext:quit))
stellt sicher, dass das Programm endet nach Ausführung(hello-world)
. Andernfalls erhalten Sie sank in die SBCL-Eingabeaufforderung. Da der code kompiliert wird automatisch in SBCL, die Funktion, die Sie ausführen, ist bereits zusammengestellt, die durch die Zeit(hello-world)
ausgeführt wird. Wenn Sie compiliert haben, die Datei vorher können Sie die kompilierte Datei zu--load
. E. g.,In der Tat,angesichts der Gleichwertigkeit der
--load
zu--eval (load "filename")
, können Sie einfach die base den Namen der Datei, und wenn es eine kompilierte version, dann SBCL laden soll, und wenn es nicht ist, dann SBCL laden der Quell-Datei und erhalten Sie kompilierten code, der Weise. E. g., im folgenden verwenden wir nur--load test
:InformationsquelleAutor Joshua Taylor
Folgende ist eine paste aus der erste google Ergebnis:
Habe es gerade getestet auf meinem arch linux terminal und Sie können Folgendes tun:
$ clisp myprogram.lisp
Dieser wird ausgeführt, das Programm direkt im terminal. Wenn Sie möchten, um es zu kompilieren, um später ausführen, finden Sie unter der oben genannten bit.
vielleicht
sbcl --eval '(compile-file "filename")'
. Zumindest seine manual sagt, dass--load filename
hat den Gegenwert von--eval '(load "filename")'
.Nun, ich versuchte nach einer Antwort zu suchen und der nächste, den ich bekam, für Sie ist diese: ` $ sbcl --script mit dem Namen.lisp` Das noch druckt eine große debugger-Meldung, aber ich konnte ihn nicht loswerden.
InformationsquelleAutor TW80000
Als andere Menschen haben gezeigt, so ziemlich alle Implementierungen haben einige laufende Lisp-code über das terminal. Es gibt auch einige Wrapper, die eine gemeinsame Schnittstelle zu vielen Implementierungen: CIM und cl-Start.
InformationsquelleAutor Luís Oliveira