Vesta SDL is a Functional Language

In a functional programming language, function calls do not have side-effects.  In other words, there are no global variables, and a function cannot change the value of variables in the calling scope.  A function's only inputs are its arguments, and a function's only output is its result value.

Most programmers are more familiar with imperative programming.  BASIC, Pascal, C, C++, Java, Perl, Python, and Tcl are all imperative programming languages (and there are many more).

Traps for Imperative Programmers

There are several aspects of Vesta SDL which may be confusing to people used to imperative programming languages:

See the "Gotchas" page for more on these and other things that may cause confusion.

Syntactic Sugar

Vesta SDL has a few features which make it seem to be imperative in some ways.  Specifically:

Language Implementation Details

The current implementation uses eager evalution. The main performance optimizations it uses are:

Kenneth C. Schalk <>
Last modified: Fri Dec 24 20:19:17 EST 2004