OBJ


Joseph Goguen, 1976


OBJ is 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). Implemented 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, David A. Turner ed, Addison-Wesley, 1990.