Extensions to functional programming in Scheme
David A. Plaisted, J W Curry · 1986
We present some extensions to Scheme which increase its expressiveness within a purely declarative framework. We give constructs for sets and universal and existential quantifiers, allowing backtracking to be expressed easily. These constructs combine the expressiveness of set notation with the efficiency of lists, and have a simple semantics that is based on lists. We also give a nonstandard definition of fixpoints and a notation for it. These extensions, together with a convenient form of memo function, have been implemented as reasonably efficient macros in Scheme. The dramatic increase in conciseness of programs is illustrated by examples. These features bring us closer to executable specifications of programs and are therefore relevant for automatic program generation. We discuss extensions to Prolog-style languages that might enable them to approximate the same expressive power.