DOC HOME SITE MAP MAN PAGES GNU INFO SEARCH
 

(guile.info.gz) Evaluating

Info Catalog (guile.info.gz) About Expressions (guile.info.gz) The REPL
 
 14.3.1 Evaluating Expressions and Executing Programs
 ----------------------------------------------------
 
 In Scheme, the process of executing an expression is known as
 "evaluation".  Evaluation has two kinds of result:
 
    * the "value" of the evaluated expression
 
    * the "side effects" of the evaluation, which consist of any effects
      of evaluating the expression that are not represented by the value.
 
    Of the expressions that we have met so far, `define' and `set!'
 expressions have side effects -- the creation or modification of a
 variable -- but no value; `lambda' expressions have values -- the newly
 constructed procedures -- but no side effects; and procedure invocation
 expressions, in general, have either values, or side effects, or both.
 
    It is tempting to try to define more intuitively what we mean by
 "value" and "side effects", and what the difference between them is.
 In general, though, this is extremely difficult.  It is also
 unnecessary; instead, we can quite happily define the behaviour of a
 Scheme program by specifying how Scheme executes a program as a whole,
 and then by describing the value and side effects of evaluation for each
 type of expression individually.
 
 So, some(1) definitions...
 
    * A Scheme program consists of a sequence of expressions.
 
    * A Scheme interpreter executes the program by evaluating these
      expressions in order, one by one.
 
    * An expression can be
 
         * a piece of literal data, such as a number `2.3' or a string
           `"Hello world!"'
 
         * a variable name
 
         * a procedure invocation expression
 
         * one of Scheme's special syntactic expressions.
 
 The following subsections describe how each of these types of expression
 is evaluated.
 

Menu

 
* Eval Literal                Evaluating literal data.
* Eval Variable               Evaluating variable references.
* Eval Procedure              Evaluating procedure invocation expressions.
* Eval Special                Evaluating special syntactic expressions.
 
    ---------- Footnotes ----------
 
    (1) These definitions are approximate.  For the whole and detailed
 truth, see  R5RS syntax (r5rs)Formal syntax and semantics.
 
Info Catalog (guile.info.gz) About Expressions (guile.info.gz) The REPL
automatically generated byinfo2html