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:
everything's an object)