Annotation of researchv10no/cmd/sml/doc/refman/equality.tex, revision 1.1.1.1

1.1       root        1: \chapter{Equality}
                      2: 
                      3: The equality function \verb"op = : ''a * ''a -> bool" is available at
                      4: all types \verb"''a" except function types, abstract types, and the
                      5: types constructed from them.  In fact, type variables that begin
                      6: with two primes are special: they stand only for types that admit
                      7: equality.
                      8: 
                      9: Two values are tested for equality as follows, depending on the kind
                     10: of value:
                     11: \begin{description}
                     12: \item[Primitive types] like integers, reals, and strings have
                     13: equality functions with the conventional behavior.
                     14: 
                     15: \item[Function types] cannot be compared (``do not admit equality'').
                     16: 
                     17: \item[Reference types:] On references, equality means identity; a
                     18: reference is equal to itself and to no other references, regardless
                     19: of similar contents.
                     20: 
                     21: \item[Record types] may be compared if all their components admit equality.
                     22: 
                     23: \item[Datatypes] may be compared for equality if all of their
                     24: constructed types admit equality.
                     25: 
                     26: \item[Opaque types] from functor parameters and abstractions do not
                     27: admit equality unless the \verb"eqtype" keyword is used (instead of
                     28: the \verb"type" keyword) in the
                     29: signature defining them.
                     30: \end{description}
                     31: 
                     32: The function \verb"op <> : ''a * ''a -> bool" is the inequality function;
                     33: it is applicable to any equality type.
                     34: 
                     35: The comparison functions \verb">", verb"<", \verb"<=", and \verb">=" do not
                     36: have this behavior; they are overloaded just for the types
                     37: \verb"int", \verb"real", and \verb"string".

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.