Let us examine a small Scheme procedure to get a feel for the language. The procedure in figure 1 splits a string of characters into a list of strings based on a delimiter character.
Figure 1: A sample Scheme function
In this example we have a top-level definition of the
split-string
function and an internal definition of the
collect
function. An internal, or nested function like
collect
has access to all lexical variables in the scope of its
definition. More specifically, collect
has access to the
lexical variables string
, delimiter
and len
. The
let
special form establishes a series of local variables and
initial bindings. In split-string
the let
establishes
only the binding of len
. The cond
special form
evaluates the test in each of its clauses, performing the clauses
action(s) when it finds the first test to succeed. The else
clause of a cond
form is executed if no other clause succeeds.
Scheme also has other standard control constructs like if
and
case
.
> (split-string "brent:WgG6SfAUnX5lQ:5359:100:Brent Benson" #\:) ("brent" "WgG6SfAUnX5lQ" "5359" "100" "Brent Benson") >