OBJ

Joseph Goguen 1976. A family of declarative "ultra high level" languages. Abstract types, generic modules, subsorts (subtypes with multiple inheritance), pattern-matching modulo equations, E-strategies (user control over laziness), module expressions (for combining modules), theories and views (for describing module interfaces). For the massively parallel RRM (Rewrite Rule Machine).

["Higher-Order Functions Considered Unnecessary for Higher-Order Programming", J.A. Goguen, in Research Topics in Functional Programming].