Identifiers
An identifier consists of a letter followed by zero or more additional
characters which may be letters digits or occurrences of _ or '
(underscore and single quote) Examples:
x yellow p11d y' GROSS_INCOME
Note that both upper and lower case letters are allowed, and they are
treated as different, so x and X are not the same identifier. There is
no restriction on the length of identifiers, and all the characters are
significant in deciding whether two identifiers are the same.
Identifiers fall into two different classes (called in the formal syntax
`identifier' and `IDENTIFIER') depending on whether their initial letter
is upper or lower case.
Identifiers are used for three different purposes in Miranda - (i) as
variables, i.e. names for values (note that the names of functions are
also considered to be variables), (ii) as typenames, such as `bool' and
`char', and (iii) as constructors (see section on algebraic types). The
names of constructors must begin with an upper case letter, while
variables and typenames must begin with a lower case letter.
Reserved words - the following are special symbols of the Miranda
language.
abstype div if mod otherwise readvals show type where with
(10)
These are often shown as underlined (or bold) in published documents,
but in programs they are typed as ordinary lower case words (which means
that these words cannot be used as identifiers).
Predefined identifiers
The following identifiers are normally predefined, and thus always in
scope. They constitute the `standard environment'. They are defined in
the script "stdenv.m", contained in the directory /usr/lib/miralib.
(a) predefined typenames
bool char num sys_message
(b) predefined constructors
False True :: bool
Appendfile Closefile Exit Stderr Stdout System Tofile :: sys_message
(c) predefined variables
abs and arctan cjustify code concat const converse cos decode digit
drop dropwhile e entier error exp filemode filter foldl foldl1 foldr
foldr1 force fst getenv hd hugenum id index init integer iterate
last lay layn letter limit lines ljustify log log10 map map2 max
max2 member merge min min2 mkset neg numval or pi postfix product
read rep repeat reverse rjustify scan seq showfloat shownum
showscaled sin snd sort spaces sqrt subtract sum system take
takewhile tinynum tl transpose undef until zip2 zip3 zip4 zip5 zip6
zip (88)
See manual entry `Standard environment' for more detailed information.
[NB There ought to be a way of suppressing or modifying the inclusion of
the standard environment, in case you want to use one of these
identifiers for another purpose - a mechanism for doing this will be
provided in later releases.]