On Introducing Higher Order Functions in ABEL

We discuss how the 1'st order specification and programming language ABEL could be extended with higher order functions. Several issues arise, related to subtyping, parameterization, strictness of generators and defined functions, and to the choice between lambda expressions and currying. The paper can be regarded as an exercise in language design: how to introduce higher order functions under the restrictions enforced by (1'st order) ABEL. A technical result is a soundness proof for covariant subtype replacement, useful when implementing data types under volume constraints imposed by computer hardware.