Shelisp er en meget kort program, der giver mekanismer til at komponere og kører Unix shell (især bash) kommandoer og konstruktioner fra Common Lisp.
Hvis du vil køre shelisp, siger ved kommandoprompten:
lisp -belastning shelisp.lisp
Dette bør starte CMU Common Lisp og giver hurtig, *. En mere bekvem form kunne være at starte emacs, og udstede kommandoen Mx cmulisp, der vil starte en `ringere lisp 'tilstand med CMU; da, siger:
(Belastning "shelisp.lisp")
Den bang (!) Flygte til shell
Nu kan du sige (den "*" er allerede placeret der af cmulisp):
*! Ls
Og det vil udføre shell ls kommandoen (ved at køre et bash instans og passerer kommandoen til det.
Selvfølgelig er du faktisk i Lisp. Du kan prøve dette:
* (Defun factorial (X) (if (zerop x) 1 (* x (factorial (1- x)))))
Fakultet
* (Factorial 33)
8683317618811886495518194401280000000
Så hvis du indtaster ``! '' Resten af linjen (indtil den første ende af linjen, som ikke slap med en `` '') fortolkes som et bash kommando og resultatet er trykt på standard output.
Prøv nu:
*! Ekko? (+ 2 3) Zuzu
5zuzu
De `? ' er den "lisp flugt«. Det efterfølges af et s-udtryk, som er læst, udført og trykt (med prinsess) og det trykte resultat erstatter `? og udtrykket i skallen kommandoen. Det kan være enhver Lisp udtryk.
* Echo (+ 2/3 2/11) "
Hvad er nyt i denne udgivelse:?
- Et par! flere funktioner blev tilsat (wget-test, bash-resultat), og denne version er genudgivet under Lisp LGPL.
Kommentarer ikke fundet