NAME
lush - Lisp Universal Shell
SYNOPSIS
lush [@initfile][lushfile...args...]
DESCRIPTION
lush starts the Lisp Universal Shell.
Lush is an object-oriented Lisp interpreter/compiler with features
designed to please people who want to prototype large numerical
applications. Lush includes an extensive library of
vector/matrix/tensor manipulation, a set of graphic functions, a simple
GUI toolkit, and interfaces to various libraries such as OpenGL, SDL,
the SGI Multimedia library (video/audio grabbing), the Numerical
Recipes library, and others. Lush is an ideal frontend script language
for programming projects written in C or other languages.
RUNNING LUSH INTERACTIVELY
Online help on the standard library is available by typing (helptool)
at the Lush prompt. You can leave Lush by typing CTRL-D at the prompt.
On startup, Lush loads various libraries from the sys and lsh
directories, as well as a .lushrc file in the user’s home directory. It
is recommended to add a directory lsh in your home directory and to
include the line (addpath "your-home-directory/lsh") to your .lushrc so
that your own Lush programs are found in Lush’s search path.
It is quite convenient to run Lush from within Emacs, which can be done
by creating somewhere in your path a symbolic link named "lisp" to the
lush executable. Then, type ESC-X run-lisp in Emacs. It is probably a
good idea to add the following line in your .emacs so Emacs switches to
Lisp mode when editing a Lush file:
(setq auto-mode-alist (append (cons "\.lsh$" ’lisp-mode) auto-mode-
alist))
RUNNING NON-INTERACTIVE LUSH SCRIPTS
In Unix, Lush can be used to write scripts that can be called from a
shell prompt (like shell or Perl scripts). A list of command-line
arguments are put in the argv variable.
Here is an example: create a file (say "capargs") with the following
content (replacing the first line by the path to your lush executable):
#!/bin/sh
exec lush "$0" "$@"
!#
(printf "capitalizing the arguments:0)
(each ((arg argv)) (printf "%s %s0 arg (upcase arg)))
then, make capargs executable: chmod a+x capargs. You can now invoke
capargs at the shell prompt:
% capargs asd gfdf
capitalizing the arguments:
capargs CAPARGS
asd ASD
gfdf GFDF
FILES
/usr/share/lush
The top of the Lush directory structure
/usr/share/lush/src
Source code of the interpreter
/usr/share/lush/sys
Core libraries (lush sources) without which Lush cannot run. A
minimal/customized version of Lush needs only that directory to
run.
/usr/share/lush/etc
Various shell scripts and utilities
/usr/share/lush/include
/usr/share/lush/lsh
Library files (lush sources) that are part of the standard
distribution. Although they are not required for Lush to run,
life would really suck without them.
/usr/share/lush/packages
Library files (lush sources) for special applications or
platforms, or programs that have been contributed by users and
cannot be assumed to be present/working in all installations of
Lush.
/usr/share/lush/local
Lush libraries that are specific to your site.
~/.lushrc
Personal Lush initialization file
~/.lush
Personal Lush directory: on-demand built libraries, etc
HISTORY
Lush is the direct descendant of the SN system. SN was first developed
as a neural network simulator with a Lisp-like scripting language. The
project was started in 1987 by Leon Bottou and Yann LeCun, and
rewritten several times since then. SN was used at AT&T for many
research projects in machine learning, pattern recognition, and image
processing. Its various incarnations were used at AT&T Bell Labs, AT&T
Labs, the Salk Institute, the University of Toronto, Universite of
Montreal, UC Berkeley, and many other research institutions. The
commercial versions of SN were used in several large companies as a
prototyping tool: Thomson-CSF, ONERA.
SEE ALSO
Use (helptool) in an interactive lush session for browsing of online
documentation.
AUTHORS
Lush was written by Leon Bottou and Yann LeCun. Contributors include:
Patrice Simard, Yoshua Bengio, Jean Bourrelly, Patrick Haffner, Pascal
Vincent, Sergey Ioffe, and many others.
This manual page was written by Kevin Rosenberg <kmr@debian.org> for
the Debian Project (but may be used by others).