Euclid
Named for the Greek geometer, who lived about 300 BC.
A Pascal descendant intended for the development of verifiable system software. It has 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.
"Report on the Programming Language Euclid", Butler W. Lampson et al, SIGPLAN Notices 12(2):1-79 (Feb 1977).