Virtual data structures

  • Doaitse Swierstra
  • Oege de Moor
Part of the Lecture Notes in Computer Science book series (LNCS, volume 755)


We demonstrate the calculational style of program development. In doing so we introduce virtual data structures which play the rôle of a catalyst in the development of programs, in the sense that in the final program they have been transformed away. We identify design steps which have to be taken in many algorithm developments: the choice of an algebraic view, the use of algebraic laws in choosing a representative and the choice of a generator. The techniques are demonstrated in a number of algorithm developments.


Decision Point Parse Tree Functional Programming Function Composition Attribute Grammar 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


  1. 1.
    R.C. Backhouse. An exploration of the Bird-Meertens formalism. Computing Science Note CS 8810, Department of Computing Science, Groningen University, P.O. Box 800, 9700 AV Groningen, The Netherlands, 1988.Google Scholar
  2. 2.
    R.S. Bird. An introduction to the theory of lists. In M. Broy, editor, Logic of Programming and Calculi of Discrete Design, volume 36 of NATO ASI Series F, pages 3–42. Springer-Verlag, 1987.Google Scholar
  3. 3.
    R.S. Bird and P. Wadler. Introduction to Functional Programming. Prentice-Hall, 1988.Google Scholar
  4. 4.
    Hendrik Boom. private communication, 1979. IFIP Working Group 2.1, Jablonna, Warschau.Google Scholar
  5. 5.
    E.W. Dijkstra. A Discipline of Programming. Prentice-Hall, 1976.Google Scholar
  6. 6.
    David Gries. The Science of Programming. Springer, 1983. 366p.Google Scholar
  7. 7.
    L. Meertens. Algorithmics — towards programming as a mathematical activity. In J.W. de Bakker, M. Hazewinkel, and J.K. Lenstra, editors, Mathematics and Computer Science, volume 1 of CWI Monographs, pages 3–42. North-Holland, 1987.Google Scholar
  8. 8.
    L. Meertens. Paramorphisms. Technical Report CS-R9005, CWI, Amsterdam 1990. To appear in Formal Aspects of Computing.Google Scholar
  9. 9.
    Erik Meijer, Maarten Fokkinga, and Ross Paterson. Functional programming with bananas, lenses, envelopes and barbed wire. In FPCA, LNCS. Springer-Verlag, 1991.Google Scholar
  10. 10.
    C.C. Morgan. Programming from Specifications. Prentice-Hall, 1990.Google Scholar
  11. 11.
    M. Spivey. A categorical approach to the theory of lists. In J.L.A. van de Snepscheut, editor, Mathematics of Program Construction, volume 375 of Lecture Notes in Computer Science, pages 399–408. Springer-Verlag, 1989.Google Scholar
  12. 12.
    J.C.S.P. van der Woude. Rabbitcount: = rabbitcount-1. In J.L.A. van de Snepscheut, editor, Mathematics of Program Construction, volume 375 of Lecture Notes in Computer Science, pages 409–420. Springer-Verlag, 1989.Google Scholar
  13. 13.
    Philip Wadler. Views: a way for pattern matching to cohabit with data abstraction. In Proc. 14th Symposium of Principles of Programming Languages, pages 307–313. ACM, January 1987.Google Scholar
  14. 14.
    Philip Wadler. Deforestation: transforming programs to eliminate trees. In H. Ganzinger, editor, ESOP '88 (= Proc. 2nd European Symposium on Programming, volume 300 of LNCS, pages 345–358. Springer-Verlag, March 1988.Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 1993

Authors and Affiliations

  • Doaitse Swierstra
    • 1
  • Oege de Moor
    • 2
  1. 1.Department of Computer ScienceUtrecht UniversityTB UtrechtThe Netherlands
  2. 2.Computing LaboratoryProgramming Research GroupOxfordUK

Personalised recommendations