Characteristics of a family of languages, called Howard Languages, will
be described in a sequence of papers at this site. None of them has
been published elsewhere.
A main characteristic is a member's design and its dependency on a
particular notion of operations that covers everything from
simple statements to program components. Each member language
represents a particular selection of operations from a collection of
predefined operations. Domain specific languages may thus be defined
by reusing existing operations along with (hopefully few) definitions
of others that represent domain expertice.
A support tool is used for construction of languages as well as for
interpretation of programs. This tool and libraries of operation
implementations are written in GNU C. Extensions to C are available in
GNU C and these are heavily used in the tool and the predefined
operations.
Below is a list of references to short papers about aspects of Howard
Languages.
Describes a simplified notion of signatures and how it
determines application syntax. It puts emphasis on the principles
and just mentions that actual notation closer to common practise
is possible, but has to be described elsewhere.
Describes semantics of a signature as the semantics of the pattern
of an internal definition of the operation described by the signature.
Semantics of an operation can then be derived from the semantics of
the operation's signature and an idealised program fragment that
defines its computational meaning.
Expression operators may as operations be defined internally or
externally. An operator may be overloaded and/or polymorphic. Both
dyadic and monadic operators are supported. A new notion of a
pattern expression is introduced to help automatic generation
of additional, hidden operand for use with certain operators.
Howard Languages all support reuse, modularity, and development of
domain specific languages. Embedded interpretation and dynamic
includes are essential techniques for language extensions.
Interpreted operations may perform special operations, map their
applications homomorphically into other notations, or compile them
into an assembly language.