Proc. of a conference on Functional programming languages and computer architecture
Programming with sets; an introduction to SETL
Programming with sets; an introduction to SETL
Theoretical Computer Science
Verification of programs that destructively manipulate data
Science of Computer Programming
Essays in computing science
Science of Computer Programming
Computational lambda-calculus and monads
Proceedings of the Fourth Annual Symposium on Logic in computer science
LFP '90 Proceedings of the 1990 ACM conference on LISP and functional programming
Parameter-passing and the lambda calculus
POPL '91 Proceedings of the 18th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Hermes: a language for distributed computing
Hermes: a language for distributed computing
Notions of computation and monads
Information and Computation
Lively linear Lisp: “look ma, no garbage!”
ACM SIGPLAN Notices
The essence of functional programming
POPL '92 Proceedings of the 19th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
ESOP'92 Symposium proceedings on 4th European symposium on programming
Call by name, assignment, and the lambda calculus
POPL '93 Proceedings of the 20th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A calculus of mobile processes, II
Information and Computation
Science of Computer Programming
Design patterns: elements of reusable object-oriented software
Design patterns: elements of reusable object-oriented software
Evolving algebras 1993: Lipari guide
Specification and validation methods
CLAM specification for provably correct compilation of CLP( R ) programs
Specification and validation methods
ICFP '97 Proceedings of the second ACM SIGPLAN international conference on Functional programming
Rolling your own mutable ADT—a connection between linear types and monads
Proceedings of the 24th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Calculating with pointer structures
Proceedings of the IFIP TC 2 WG 2.1 international workshop on Algorithmic languages and calculi
Call-by-name call-by-value, call-by-need and the linear lambda calculus
Theoretical Computer Science - Special issue on mathematical foundations of programming semantics
Communications of the ACM
Communications of the ACM
A contribution to the development of ALGOL
Communications of the ACM
First-Order Dynamic Logic
A Discipline of Programming
Integrating Independently-Developed Components in Object-Oriented Languages
ECOOP '93 Proceedings of the 7th European Conference on Object-Oriented Programming
ECCOP '98 Proceedings of the 12th European Conference on Object-Oriented Programming
Formal Methods for Industrial Applications, Specifying and Programming the Steam Boiler Control (the book grow out of a Dagstuhl Seminar, June 1995).
The Semantics of the C Programming Language
CSL '92 Selected Papers from the Workshop on Computer Science Logic
Hints on programming language design.
Hints on programming language design.
From recursion to iteration: what are the optimizations?
PEPM '00 Proceedings of the 2000 ACM SIGPLAN workshop on Partial evaluation and semantics-based program manipulation
ASM '00 Proceedings of the International Workshop on Abstract State Machines, Theory and Applications
Hi-index | 0.01 |
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.