Abstract:
We develop a calculus for lazy functional programming based on recursion operators associated with data type definitions. For these operators we derive various algebraic laws that are useful in deriving and manipulating programs. We shall show that all example functions in Bird and Wadler's "Introduction to Functional Programming" can be expressed using these operators. 1 Introduction Among the many styles and methodologies for the construction of computer programs the Squiggol style in our opinion deserves attention from the functional programming community. The overall goal of Squiggol is to calculate programs from their specification in the way a mathematician calculates solutions to differential equations, or uses arithmetic to solve numerical problems. It is not hard to state, prove and use laws for well-known operations such as addition, multiplication and ---at the function level--- composition. It is, however, quite hard to state, prove and use laws for arbitrarily recursively ...
Citations
|
1124
|
Imperative functional programming
– Jones, Wadler
- 1993
|
|
388
|
Denotational Semantics: The Scott-Strachey Approach to Programming Language Theory
– Stoy
- 1977
|
|
385
|
Comprehending monads
– WADLER
- 1992
|
|
278
|
Types, abstraction and parametric polymorphism
– Reynolds
- 1983
|
|
234
|
Domains for Denotational Semantics
– Scott
- 1982
|
|
225
|
Theorems for free
– Wadler
- 1989
|
|
195
|
An introduction to the theory of lists
– Bird
- 1987
|
|
134
|
The category-theoretic solution of recursive domain equations
– Smyth, Plotkin
- 1982
|
|
104
|
Views: A way for pattern matching to cohabit with data abstraction
– WADLER
- 1987
|
|
89
|
Algorithmics -- towards programming as a mathematical activity
– Meertens
- 1987
|
|
28
|
Algebraic specification of data types: A synthetic approach
– Lehmann, Smyth
- 1981
|
|
28
|
Denotational Semantics
– Schmidt
- 1986
|
|
12
|
Tupling and mutumorphisms
– Fokkinga
- 1989
|
|
6
|
Programming Calculi Based on Fixed Point Transformations
– Meyer
- 1985
|
|
5
|
Naturalness of polymorphism
– Bruin
- 1989
|
|
4
|
Translating attribute grammars into catamorphisms. The Squiggolist
– Fokkinga, Jeuring, et al.
- 1991
|
|
4
|
Codatatypes in ML
– Hagino
- 1989
|
|
4
|
Programmierung mit Funktionsobjekten: Konstruktive Erzeugung semantischer Bereiche und Anwendung auf die partielle Auswertung. Technische Universitat Munchen, Doctoral Dissertation, also available as: TUM-I8803
– Zierer
- 1988
|
|
2
|
A relational theory of types
– Backhouse, Woude, et al.
- 1991
|
|
2
|
An introduction to the category-theoretic solution of recursive domain equations
– Bos, Hemerik
- 1988
|
|
2
|
Retractions in comparing Prolog semantics
– Bruin, Vink
- 1989
|
|
2
|
Algebraic Types and Program Transformation
– Malcolm
- 1990
|
|
2
|
Reasoning about Functional Programs
– Paterson
- 1988
|
|
2
|
and Promotability
– Homomorphisms
- 1989
|
|
2
|
Fixed point constructions in order enriched categories
– Wand
- 1979
|
|
1
|
On the use of composition in transformational programming
– Berghammer
- 1985
|
|
1
|
Transformation parallel ablaufender Programme
– Broy
- 1980
|
|
1
|
Some techniques for recursion removal
– Arsac, Kodratoff
- 1982
|