Euclid (programming language)

It was designed in the mid-1970s by Butler Lampson and James G. Mitchell at the Xerox PARC lab in collaboration with Jim Horning at the University of Toronto, Ralph L. London at USC ISI and Gerald J. Popek at UCLA.

It was considered innovative for the time; the compiler development team had a $2 million budget over 2 years and was commissioned by the Defense Advanced Research Projects Agency of the U.S. Department of Defense and the Canadian Department of National Defence.

Euclid is descended from Pascal, Mesa, Alphard, CLU, Gypsy, BCPL, Modula, LIS, and SUE.

Functions in Euclid are closed scopes, may not have side effects, and must explicitly declare imports.

Euclid also disallows gotos, floating point numbers, global assignments, nested functions and aliases, and none of the actual parameters to a function can refer to the same memory cell (which Euclid calls a "variable").