LUSH(1)
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).