Shelisp je velmi krátký program, který poskytuje mechanismy pro vytváření a provozování Unix shell (bash), zejména příkazy a konstrukce z Common Lisp.
Chcete-li spustit shelisp, řekněme na příkazovém řádku:
Lisp -load shelisp.lisp
To by mělo začít CMU Common Lisp a poskytnout výzvu, *. Vhodnější formou může být začít Emacs, a vydat příkaz Mx cmulisp, který začne režim `horší Lisp" s CMU; pak říkají:
(Load "shelisp.lisp")
Bang (!) Útěk do shell
Nyní můžete říct ("*" je již tam položit cmulisp):
*! Ls
A to bude spustit příkaz shell ls (spuštěním instance bash a předání příkazu k němu.
Samozřejmě, že jste vlastně v Lispu. Můžete zkusit toto:
* (Defun faktoriál (x) (je-li (zerop x) 1 (* x (faktoriál (1 x)))))
FAKTORIAL
* (Faktoriál 33)
8683317618811886495518194401280000000
Takže, pokud zadáte ``! '' Zbytek řádku (až do prvního konce řádku, který není unikl s `` ''), je interpretován jako příkaz bash a výsledek se vytiskne na standardní výstup.
Nyní zkuste:
*! Echo? (+ 2 3) Zuzu
5zuzu
V `?" je "Lisp útěk". To následuje S-výraz, který se čte, popraven a tištěné (s princ), a tištěný výsledek nahradí `?" a výraz v příkazu skořápky. Může to být jakýkoliv Lisp výraz.
* Echo (+ 2/3 2/11) "
Co je nového v této verzi:!?
- pár byly i další funkce (wget-test, bash-výsledek), a tato verze je znovu vydána pod Lisp LGPL.
Komentáře nebyl nalezen