## Higher Order Functions Considered Unnecessary for Higher Order Programming (1990)

Venue: | SRI International, 333 Ravenswood Ave., Menlo Park CA 94025 |

Citations: | 8 - 0 self |

### BibTeX

@TECHREPORT{Goguen90higherorder,

author = {Joseph A. Goguen},

title = {Higher Order Functions Considered Unnecessary for Higher Order Programming},

institution = {SRI International, 333 Ravenswood Ave., Menlo Park CA 94025},

year = {1990}

}

### OpenURL

### Abstract

It is often claimed that the essence of functional programming is the use of functions as values, i.e., of higher order functions, and many interesting examples have been given showing the power of this approach. Unfortunately, the logic of higher order functions is difficult, and in particular, higher order unification is undecidable. Moreover (and closely related), higher order expressions are notoriously difficult for humans to read and write correctly. However, this paper shows that typical higher order programming examples can be captured with just first order functions, by the systematic use of parameterized modules, in a style that we call parameterized programming. This has the advantages that correctness proofs can be done entirely within first order logic, and that interpreters and compilers can be simpler and more efficient. Moreover, it is natural to impose semantic requirements on modules, and hence on functions. A more subtle point is that higher order logic does not alwa...

### Citations

570 | A Transformation System for Developing Recursive Programs
- M, Darlington
- 1977
(Show Context)
Citation Context ... its external interface; 3. restrict a module, by eliminating some of its functionality; 4. encapsulate some existing code; 5. modify the code inside a module. This approach to program transformation =-=[6, 81, 80]-=- provides a broad range of program transformations right inside of programs, and it also easily takes account of data structure. Although module importation can be seen as a special case of parameter ... |

443 |
Can programming be liberated from the von Neumann style? a functional style and its algebra of programs
- Backus
- 1978
(Show Context)
Citation Context ...mantics with equations. Other related systems include those due to Hoffmann and O'Donnell [55, 74], Lucas and Risch [64], and Prywes [78], all of which are first order, and the elegant work of Backus =-=[1]-=-, which is higher order functional programming for a fixed set of rewrite rules and data types. This section provides an intuitive introduction to features of OBJ that are needed for understanding our... |

161 |
The semantics of Clear, a specification language
- Burstall, Goguen
- 1980
(Show Context)
Citation Context ...whatever attributes assoc, comm, id: and idem are present, such that every equation in T is true of every model of M. (A view from one theory to another is what logicians call a theory interpretation =-=[8]-=-.) The mappings of sorts and operations are expressed in the respective forms sort S1 to S1' sort S2 to S2' ... op o1 to o1' op o2 to o2' ... 11 where o1, o1 0 , o2, etc. may be operation forms, or fo... |

143 |
Putting Theories Together to Make Specifications
- Burstall, Goguen
- 1977
(Show Context)
Citation Context ... a language for "error algebras" [29], an attempt to extend algebraic abstract data types to handle errors and partial functions in a simple, uniform way. This first design also used ideas f=-=rom Clear [7, 9] for param-=-eterized modules. Initial implementations of OBJ were done from 1977 to 1979 at UCLA by Joseph Tardo as OBJ0 and OBJT [85, 46] using error algebras plus an "image" construct for parameteriza... |

56 |
A kernel language for abstract data types and modules
- Burstall, Lampson
(Show Context)
Citation Context ...tion. First, they suggest it might be awkward to "code up" parameterized programming into some form of denotational semantics (e.g., in the style of [65]) or type theory (e.g., in the style =-=of Pebble [11]-=-, PX [54] or Martin-Lof's type theory [66]). Even if we had such an encoding, it would not be the sort of notation that programers should have to deal with in practice, but would be somewhat like tryi... |

41 |
Characterization of computable data types by means of a finite equational specification method
- Bergstra, Tucker
- 1980
(Show Context)
Citation Context ...bra, and thus OBJ, provides a completely general programming formalism, in the sense that any partial computable function can be defined, according to an as yet unpublished theorem of Jos'e Meseguer; =-=[3, 69]-=- give similar results for total computable functions. 2.5 Hierarchical Structure Conceptual clarity and ease of understanding are greatly facilitated by breaking a program into modules, each of which ... |

38 |
An informal introduction to specifications using Clear
- Burstall, Goguen
- 1981
(Show Context)
Citation Context ... a language for "error algebras" [29], an attempt to extend algebraic abstract data types to handle errors and partial functions in a simple, uniform way. This first design also used ideas f=-=rom Clear [7, 9] for param-=-eterized modules. Initial implementations of OBJ were done from 1977 to 1979 at UCLA by Joseph Tardo as OBJ0 and OBJT [85, 46] using error algebras plus an "image" construct for parameteriza... |

32 |
Theory and practice of sequential algorithms: the kernel of the applicative language CDS0
- Berry, Curien
- 1985
(Show Context)
Citation Context ...a language, a high level description of what 3 a program does actually is a program; that is, one can execute it. Other logical programming languages include pure Prolog [17], pure Lisp [67], and CDS =-=[4]-=-; such languages can also be considered as efficiently executable specification languages. Some other languages that are based on algebraic semantics include Larch [51], Asspegique [5], Obscure [62] a... |

23 |
theories and freeness: an introduction for computer scientistsâ€™, in: Theoretical Foundations of Programming Methodology, edited by M. Wirsing and G
- Burstall, Goguen, et al.
- 1982
(Show Context)
Citation Context ...hism) "initial" algebra as the "most representative" model of the equations (there may of course be many other models), i.e., as the representation-independent standard of comparis=-=on for correctness. [10]-=- shows that an algebra is initial if and only if it satisfies these two properties: 1. no junk: every element can be named using the given constant and operation symbols; and 2. no confusion: all equa... |

4 |
The ASSPEGIQUE specification environment - motivations and design
- Bidoit, Choppy, et al.
- 1985
(Show Context)
Citation Context ...p [67], and CDS [4]; such languages can also be considered as efficiently executable specification languages. Some other languages that are based on algebraic semantics include Larch [51], Asspegique =-=[5]-=-, Obscure [62] and Act One [19]; it seems fair to say that they have all been significantly influenced by OBJ. Higher order functional programming languages like Hope [12], Miranda [86], ML [53] and H... |

3 |
De Cindio, and Giancarlo Mauri. OBJSA net systems: a class of high-level nets having objects as domains
- Battiston, Fiorella
- 1990
(Show Context)
Citation Context ...British Alvey Project, and will be collected with some more recent work in a book on the practical use of OBJ [35]. OBJ is also being combined with Petri nets, thus allowing structured data in tokens =-=[2]-=-, and is one language for programming a massively parallel machine that executes rewrite rules directly [61, 42]; in fact, we believe that OBJ on such a machine should greatly out-perform a convention... |