Eureka definitions for free! or Disagreement points for fold/unfold transformations

  • Hanne Riis Nielson
  • Flemming Nielson
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 432)


The fold/unfold framework of Burstall and Darlington is a very powerful framework for transforming function definitions in the form of recursion equation schemes. This may be used to transform a function so as to improve the efficiency of its implementation. However, for this to work the user must supply so-called Eureka definitions and it may require some ingenuity to construct these. This paper shows that a class of these Eureka definitions can be derived in a rather systematic way.


  1. [1]
    R. Burstall and J.Darlington. A transformation system for developing recursive programs. Journal of the ACM, 1977.Google Scholar
  2. [2]
    M. S. Feather. A system for assisting program transformation. ACM Transactions on Programming Languages and Systems, 1982.Google Scholar
  3. [3]
    P. Hudak and P.Wadler. Report on the Functional Programming Language Haskell. Technical Report, Glasgow University, 1988.Google Scholar
  4. [4]
    U. Jørring and W.L.Scherlis. Compilers and staging transformations. In Proc. 13th ACM Symposium on Principles of Programming Languages, 1986.Google Scholar
  5. [5]
    J. Launchbury. Projections for specialization. In Proc. of the IFIP TC2 Workshop on Partial Evaluation and Mixed Computation, North-Holland, 1988.Google Scholar
  6. [6]
    R. Milner. The standard ML core language. In Proc. 1984 ACM Conference on Lisp and Functional Programming, 1984.Google Scholar
  7. [7]
    T. Mogensen. Separating binding times in language specifications. In Proc. of Functional Programming and Computer Architecture, 1989.Google Scholar
  8. [8]
    F. Nielson and H. Riis Nielson. Forced transformations of OCCAM programs. Technical Report, Aarhus University, 1989.Google Scholar
  9. [9]
    H. Riis Nielson and F.Nielson. Automatic binding time analysis for a typed λ-calculus. Science of Computer Programming, 1988.Google Scholar
  10. [10]
    H. Riis Nielson and F. Nielson. Transformations on higher-order functions. In Proc. of Functional Programming and Computer Architecture, 1989.Google Scholar
  11. [11]
    W. Polak. Compiler Specification and Verification. LNCS 124, Springer, 1981.Google Scholar
  12. [12]
    J. C. Reynolds. On the relation between direct and continuation semantics. In Proceedings 2nd ICALP, Springer LNCS 14, 1974.Google Scholar
  13. [13]
    D. Turner. Miranda: a non-strict functional language with polymorphic types. In Functional Programming Language and Computer Architecture, Springer LNCS 201, 1985.Google Scholar
  14. [14]
    P. Wadler. Theorems for free! In Proc. 4th international conference on functional programming language and computer architecture, ACM Press, 1989.Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 1990

Authors and Affiliations

  • Hanne Riis Nielson
    • 1
  • Flemming Nielson
    • 1
  1. 1.Computer Science DepartmentAarhus UniversityDenmark

Personalised recommendations