Shelisp är en mycket kort program som ger mekanismer för att komponera och köra Unix shell (särskilt bash) kommandon och konstruktioner från Common Lisp.
För att köra shelisp, säger i kommandotolken:
lisp -load shelisp.lisp
Detta bör börja CMU Common Lisp och ge snabb, *. En mer praktisk form kan vara att starta emacs, och utfärda kommandot Mx cmulisp som kommer att starta en `sämre lisp" -läge med cmu; då, säger:
(Last "shelisp.lisp")
Den bang (!) Fly skal
Nu kan du säga (den "*" är redan lagt dit av cmulisp):
*! Ls
Och det kommer att exekvera kommandot skal ls (genom att köra en bash instans och passerar kommandot till den.
Naturligtvis är du faktiskt i Lisp. Du kan prova detta:
* (Defun faktoriella (x) (if (zerop x) 1 (* x (faktoriell (1- x)))))
FABRIKS-
* (Faktoriell 33)
8683317618811886495518194401280000000
Så, om du anger ``! '' Resten av raden (tills den första änden av linjen som inte kom undan med en `` '') tolkas som ett bash kommando och resultatet är tryckt på standard ut.
Försök nu:
*! Eko? (+ 2 3) Zuzu
5zuzu
De `? ' är "lisp escape". Den följs av en s-uttryck som läses, avrättades och tryckt (med princ) och det tryckta resultatet ersätter `? ' och uttrycket i kommandoskal. Det kan vara någon Lisp uttryck.
* Echo (+ 2/3 2/11) "
Vad är nytt i den här versionen:!?
- Ett fåtal fler funktioner sattes (wget-testet, våldsamt slag-resultat), och denna version är återutgivna under Lisp LGPL.
Kommentarer hittades inte