
School is a programming language designed to keep the basic semantics of object-oriented languages, mainly Smalltalk, with a secure type system. All values in School are objects. Variables do not contain objects, but references to them, and both assignment and parameter passing manipulate references. All comunication between objects are based on late-binding, and the binding depends solely on the receiver. Moreover, the type system has no influence over the semantics of the language. The main rule that has guided the development of School's type system has been to avoid any construction that can cause a ``message not understood error'' at run-time; obeying this rule, we have tried to make the language as flexible as possible. In order to do that, School has separate hierarchies for types and classes (specifications and implementations), structural subtyping, and constrained genericity. At the end, we arrived in a terse language that can model most type facilities presented by other OO languages.
You can find more about School in the following references: