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")
>