The Herschel Programming Language


Herschel is an general-purpose multiparadigm programming language. It is strongly typed, offering type inference and parametric polymorphism (generics). It is consequently object oriented (everything is a object, even functions), while its consequent multiple dispatch approach keeps a strong functional touch. The object model is class-oriented, supporting multiple inheritance as well as the separation of types (protocols, interfaces) and classes.

The grammar is regular, small, and context free. In particular it can be parsed without symbol tables, and does not require a special preprocessor since it offers powerful hygienic macros as part of the language and special support for conditional compilation.

It is designed for a conventional compile-link development model, though this is not required by the specification.

Herschel has been strongly influenced by languages like Scheme, Dylan, Cecil/Diesel, and Modula-3. It drew of course influences of much more sources, which are sometimes not obvious (like D and Go).

A (non complete) list of features: