|
ABSTRACT
What is a good method to specify and derive imperative programs? This paper argues that a new form of functional programming fits the bill: where variable functions can be updated at specified points in their domain.Traditional algebraic specification and functional programming are a powerful pair of tools for specifying and implementing domains of discourse and operations on them. Recent work on evolving algebras has introduced the function update in algebraic specifications, and has applied it with good success in the modelling of reactive systems. We show that similar concepts allow one to derive efficient programs in a systematic way from functional specifications. The final outcome of such a derivation can be made as efficient as a traditional imperative program with pointers, but can still be reasoned about at a high level.Variable functions can also play an important role in the structuring of large systems. They can subsume object-oriented programming languages, without incurring the latter's problems with pointer aliasing and modularity.
REFERENCES
Note: OCR errors may be found in this Reference List extracted from the full text article. ACM has opted to expose the complete List rather than only correct and linked references.
| |
AP94
|
P. Achten and R. Plasmeijer. Towards distributed interactive programs in the functional programming language Clean. In J. Glauert, editor, Proceedings of the 6th International Workshop on the Implementation of Funtional Languages, pages 28.1- 28.16. University of East Anglia, Norwich, UK, 1994.
|
 |
Bak92
|
|
| |
BBD+96
|
Christoph Beierle , Egon Börger , Igor Durdanovic , Uwe Glässer , Elvinia Riccobene, Refining Abstract Machine Specifications of the Steam Boiler Control to Well Documented Executable Code, Formal Methods for Industrial Applications, Specifying and Programming the Steam Boiler Control (the book grow out of a Dagstuhl Seminar, June 1995)., p.52-78, January 1996
|
| |
Bij89
|
|
| |
BR94
|
Egon D. BSrger and Dean Rosenzweig. A mathematical definition of full Prolog. Science of Computer Programming, 1994.
|
| |
BS94
|
|
| |
Bur72
|
R.M. Burstall. Some techniques for proving correctness of programs which alter data structures. In B. Meltzer and D. Michie, editors, Machine Intelligence 7, pages 23-50. Edinburgh University Press, 1972.
|
| |
Bur82
|
Warren Burton. An efficient functional implementation of FIFO queues. Information Processing Letters, 14:205-206, 1982.
|
 |
CF91
|
|
 |
CH97
|
|
| |
Dij76
|
|
| |
GH93
|
|
| |
GHJV94
|
|
| |
Gir87
|
|
| |
Gur95
|
|
| |
Har79
|
|
| |
HJ89
|
|
| |
HM81
|
Robert Hood and Robert Melville. Real-time queue operations in pure Lisp. Information Processing Letters, 13:50-53, 1981.
|
 |
Hoa71
|
|
| |
Hoa72
|
C.A.R. Hoare. Proof of correctness of data representations. Acta lnformatica, 1'271- 281. 1972.
|
| |
Hoa73
|
|
| |
Hö193
|
|
| |
HPW92
|
Paul Hudak, Simon Peyton Jones, and Philip Wadler. Report on the programming language Haskell' a non-strict, purely functional language, version 1.2. Technical Report YALEU/DCS/RR-777, Yale University Department of Computer Science, March 1992.
|
| |
Hug85
|
|
| |
HW73
|
C.A.R. Hoare and Niklaus Wirth. An axiomatic definition of the programming language Pascal. Acta Informatica, 2'335-355, 1973.
|
| |
KH98
|
|
| |
LM92
|
Patrick Lincoln and John Mitchelk Operational aspects of linear lambda calculus. In Seventh Annual IEEE Symposium on Logic in Computer Science, Santa Cruz, California, pages 235-246, Los Alamitos. California, June 1992. IEEE Computer Society Press.
|
| |
Mas88
|
|
| |
Mog89
|
|
| |
Mog91
|
|
| |
Möl93
|
|
| |
Möl97
|
|
| |
MOTW95
|
|
| |
MPW92
|
|
| |
MT91
|
Ian Mason and Carolyn Talcott. Equivalence in functional languages with side effects. Journal of Functional Programming, 1(3):287-327, July 1991.
|
| |
Ode92
|
|
 |
Oka97
|
|
 |
ORH93
|
Martin Odersky , Dan Rabin , Paul Hudak, Call by name, assignment, and the lambda calculus, Proceedings of the 20th ACM SIGPLAN-SIGACT symposium on Principles of programming languages, p.43-56, March 1993, Charleston, South Carolina, United States
[doi> 10.1145/158511.158521]
|
 |
Rey79
|
|
| |
SBL+91
|
Robert E. Strom , David F. Bacon , Arthur P. Goldberg , Andy Lowry , Daniel M. Yellin , Shaula Alexander Yemini, Hermes: a language for distributed computing, Prentice-Hall, Inc., Upper Saddle River, NJ, 1991
|
| |
SDDS86
|
|
| |
SF93
|
Amr Sabry and John Field. Reasoning about explicit and implicit representations of state. In SIPL '93 A CM SIGPLAN Workshop on State in Programming Languages, Copenhagen, Denmark, pages 17-30, June 1993. Yale University Research Report YALEU/DCS/RR-968.
|
 |
Wad90a
|
|
| |
Wad90b
|
Philip Wadler. Linear types can change the world! In M. Broy and C. Jones, editors, IFIP TC 2 Working Conference on Programming Concepts and Methods, Sea of Galilee, Israel, pages 347-359. North Holland, April 1990.
|
 |
Wad92
|
|
 |
WH66
|
|
|