Shelisp

  610 downloads
3.2 GPL (GNU General Public License)    
2.1/5 12
A very short program that provides mechanisms for composing and running Unix shell

description

download

specifications

changelog

Shelisp is a very short program that provides mechanisms for composing and running Unix shell (particularly bash) commands and constructs from Common Lisp.

To run shelisp, say at the command prompt:

lisp -load shelisp.lisp

This should start CMU Common Lisp and provide the prompt, *. A more convenient form could be to start emacs, and issue the command M-x cmulisp that will start an `inferior lisp' mode with cmu; then, say:

(load "shelisp.lisp")

The bang (!) escape to shell

Now you can say (the '*' is already put there by cmulisp):

* !ls

And it will execute the shell ls command (by running a bash instance and passing the command to it.

Of course, you are actually in Lisp. You can try this:
* (defun factorial (x) (if (zerop x) 1 (* x (factorial (1- x)))))
FACTORIAL
* (factorial 33)
8683317618811886495518194401280000000

So, if you enter ``!'' the rest of the line (until the first end of line that is not escaped with a ``'') is interpreted as a bash command and the result is printed on the standard output.

Now try:

* !echo ?(+ 2 3) zuzu
5zuzu

The `?' is the 'lisp escape'. It is followed by an s-expression which is read, executed and printed (with princ) and the printed result replaces the `?' and the expression in the shell command. It can be any Lisp expression.

* !echo ?(+ 2/3 2/11) "
READ MORE   
Last updated on January 16th, 2012

0 User reviews so far.

SUBMIT