Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Contact Us
Online Help
Domain Status
Man Pages

Virtual Servers

Topology Map

Server Agreement
Year 2038

USA Flag



Man Pages

Manual Reference Pages  -  PURE (1)


pure - the Pure interpreter


See Also


pure [options ...] [-x] script [args ...]
pure [options ...] [-b|-c|-i] [script ...] [-- args ...]


-b Batch mode (execute the given scripts and exit).
-c Batch compilation (compile the scripts to a native binary).
--ctags, --etags
  Create a tags file in ctags (vi) or etags (emacs) format.
  Disable source option (conditional compilation).
  Enable eager JIT compilation. This requires LLVM 2.7 or later, otherwise this flag will be ignored.
  Enable source option (conditional compilation).
  Interactive commands are prefixed with the specified character. Permitted prefixes are: !$%&*,:<>@\|.
-fPIC, -fpic
  Create position-independent code (batch compilation).
-g Enable symbolic debugging.
--help, -h
  Print help message and exit.
-i Interactive mode (read commands from stdin after sourcing the given scripts, if any).
  Add a directory to be searched for included source scripts.
  Add a directory to be searched for dynamic libraries.
  Library to be linked in batch compilation.
  Add llc machine options in batch compilation.
  Name of main entry point in batch compilation.
  Disable command-line editing.
--noprelude, -n
  Do not load the prelude.
--norc Do not run the interactive startup files.
  Output filename for batch compilation.
-q Quiet startup (suppresses sign-on message in interactive mode).
  Tags file to be written by --ctags or --etags.
  Run Pure inside TeXmacs.
-u Do not strip unused functions in batch compilation.
  Set verbosity level.
  Print version information and exit.
-w Enable compiler warnings about various dubious constructs and backward compatibility issues.
-x Execute a script with the given command line arguments.
-- Stop option processing and pass the remaining command line arguments in the argv variable.


Pure is a modern-style functional programming language based on term rewriting. Pure programs are basically collections of equational rules used to evaluate expressions in a symbolic fashion by reducing them to normal form.

pure is the Pure interpreter. The interpreter has an LLVM backend which JIT-compiles Pure programs to machine code, hence programs run blazingly fast and interfacing to C modules is easy, while the interpreter still provides a convenient, fully interactive environment for running Pure scripts and evaluating expressions.

Basically, to run a Pure script with the interpreter, just specifiy the filename of the script on the command line (optionally followed by additional arguments to be passed to the script). You can also invoke the interpreter without arguments, in which case it starts up in interactive mode. Or you can compile one or more scripts to a native executable (as well as a number of other recognized LLVM and native code formats) with the -c option (use -o to specify the output filename); this requires that you have some parts of the LLVM toolchain (llc, opt) as well as gcc installed. Last but not least, you can create a tags file for use with emacs(1) or vi(1) with the --etags and --ctags options.

The full Pure manual can be read inside the interpreter, by typing help on the interpreter’s command line. This requires w3m(1) to work. (You can also set the name of another html browser to use with the PURE_HELP or the BROWSER environment variable, or read the manual online at the Pure website.)


a.out Default output filename for batch compilation (-c).
  Interactive command history.
~/.purerc, .purerc, .pure
  Interactive startup files. The latter is usually a dump from a previous interactive session.
  Standard prelude. If available, this script is loaded before any other definitions, unless -n was specified.


CC, CXX C and C++ compiler used by the Pure batch compiler (pure -c) to compile and link native executables. Defaults to gcc and g++, respectively.
  If the PURE_HELP variable is not set (see below), this specifies a colon-separated list of browsers to try for reading the online documentation. More information about the BROWSER variable can be found at
  Directory to search for library scripts, including the prelude. If PURELIB is not set, it defaults to some location specified at installation time.
  Enable eager JIT compilation (same as --eager-jit).
  If set, interactive commands are prefixed with the first character in the value of this variable (same as --escape). If the variable is empty, or its first character is not a permitted prefix, Pure reverts to the default of no prefix.
  Browser to use to read online documentation in the interpreter. By default, w3m(1) is used.
  Additional directories (in colon-separated format) to be searched for included scripts.
  Additional directories (in colon-separated format) to be searched for dynamic libraries.
  Shell command to be used for paging through output of the show command, when the interpreter runs in interactive mode. PURE_LESS does the same for evaluation results printed by the interpreter.
  Command prompt used in the interactive command loop ("> " by default).
  Maximum stack size in kilobytes (0 = unlimited). A reasonable default is provided (currently this is always 8192K - 128K for interpreter and runtime, which should work on most modern PCs). If you’re still getting segfaults due to stack overflow then you’ll either have to reduce this value or increase the actual stack space available to programs.


LGPL V3 or later. See the accompanying COPYING file for details.


Albert Graef <>, Dept. of Computer Music, Johannes Gutenberg University of Mainz, Germany.


You can find the latest releases, as well as the complete manual and the mailing list at the Pure website,
Search for    or go to Top of page |  Section 1 |  Main Index

Pure PURE (1) September 2014

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with manServer 1.07.