DOC HOME SITE MAP MAN PAGES GNU INFO SEARCH
 

(guile.info.gz) Latent Typing

Info Catalog (guile.info.gz) About Data (guile.info.gz) Values and Variables
 
 14.1.1 Latent Typing
 --------------------
 
 The term "latent typing" is used to describe a computer language, such
 as Scheme, for which you cannot, _in general_, simply look at a
 program's source code and determine what type of data will be
 associated with a particular variable, or with the result of a
 particular expression.
 
    Sometimes, of course, you _can_ tell from the code what the type of
 an expression will be.  If you have a line in your program that sets the
 variable `x' to the numeric value 1, you can be certain that,
 immediately after that line has executed (and in the absence of multiple
 threads), `x' has the numeric value 1.  Or if you write a procedure
 that is designed to concatenate two strings, it is likely that the rest
 of your application will always invoke this procedure with two string
 parameters, and quite probable that the procedure would go wrong in some
 way if it was ever invoked with parameters that were not both strings.
 
    Nevertheless, the point is that there is nothing in Scheme which
 requires the procedure parameters always to be strings, or `x' always
 to hold a numeric value, and there is no way of declaring in your
 program that such constraints should always be obeyed.  In the same
 vein, there is no way to declare the expected type of a procedure's
 return value.
 
    Instead, the types of variables and expressions are only known - in
 general - at run time.  If you _need_ to check at some point that a
 value has the expected type, Scheme provides run time procedures that
 you can invoke to do so.  But equally, it can be perfectly valid for two
 separate invocations of the same procedure to specify arguments with
 different types, and to return values with different types.
 
    The next subsection explains what this means in practice, for the
 ways that Scheme programs use data types, values and variables.
 
Info Catalog (guile.info.gz) About Data (guile.info.gz) Values and Variables
automatically generated byinfo2html