Euclid
<language> (Named after the Greek geometer, fl ca 300 BC.) A
Pascal descendant for development of verifiable system software.
No
goto, no side effects, no global assignments, no functional arguments, no nested procedures, no floats, no enumeration types.
Pointers are treated as indices of special arrays called collections.
To prevent
aliasing, Euclid forbids any overlap in the list of actual parameters of a procedure.
Each procedure gives an imports list, and the compiler determines the identifiers that are implicitly imported.
Iterators.
Ottawa Euclid is a variant.
["Report on the Programming Language Euclid", B.W. Lampson et al, SIGPLAN Notices 12(2):1-79, Feb 1977].