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.]

