Skip to main content

Similix: A Self-Applicable Partial Evaluator for Scheme

  • Conference paper
Partial Evaluation (DIKU 1998)

Part of the book series: Lecture Notes in Computer Science ((LNAI,volume 1706))

Included in the following conference series:

Abstract

Similix is an autoprojector (a self-applicable partial evaluator) for a large higher-order subset of the strict functional language Scheme. Similix handles source programs that use a limited class of side-effects, for instance input/output operations. Similix handles partially static data structures.

Similix is automatic: in general, no user annotations (such as unfolding information) are required. However, user assistance may in some cases be required to avoid looping. Similix gives certain guarantees concerning the residual programs it generates: computations are never discarded (partial evaluation thus preserves termination properties) and never duplicated. Similix is well-suited for partially evaluating interpreters that use environments represented as functions, and interpreters written in continuation passing style. Since Similix is self-applicable, stand-alone compilers can be generated from interpreters.

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD 39.99
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD 54.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. Lars Ole Andersen. Program Analysis and Specialization for the C Programming Language. PhD thesis, DIKU, University of Copenhagen, May 1994. (DIKU report 94/19).

    Google Scholar 

  2. Anders Bondorf and Olivier Danvy. Automatic autoprojection of recursive equations with global variables and abstract data types. Technical Report 90-4, DIKU, University of Copenhagen, Denmark, 1990.

    MATH  Google Scholar 

  3. Anders Bondorf and Olivier Danvy. Automatic autoprojection of recursive equations with global variables and abstract data types. Science of Computer Programming, 16:151–195, 1991.

    Article  MATH  Google Scholar 

  4. Anders Bondorf and Jesper Jørgensen. Efficient analyses for realistic off-line partial evaluation: extended version. Technical Report 93/4, DIKU, University of Copenhagen, Denmark, 1993.

    Google Scholar 

  5. Anders Bondorf and Jesper Jørgensen. Efficient analyses for realistic off-line partial evaluation. Journal of Functional Programming, special issue on partial evaluation, 3(3):315–346, 1993.

    Article  Google Scholar 

  6. Anders Bondorf. Automatic autoprojection of higher order recursive equations. In Neil D. Jones, editor, ESOP’90, Copenhagen, Denmark. LNCS 432, pages 70–87. Springer-Verlag, May 1990.

    Google Scholar 

  7. Anders Bondorf. Self-Applicable Partial Evaluation. PhD thesis, DIKU, University of Copenhagen, Denmark, 1990.

    Google Scholar 

  8. Anders Bondorf. Automatic autoprojection of higher order recursive equations. Science of Computer Programming, 17(1–3):3–34, December 1991. Revision of paper in ESOP’90, LNCS 432, May 1990.

    Google Scholar 

  9. Anders Bondorf. Compiling laziness by partial evaluation. In Graham Hutton, and Carsten Kehler Hoist, editors. Functional Programming, Glasgow 1990. Workshops in Computing. Springer-Verlag [25], pages 9–22, 1991.

    Google Scholar 

  10. Anders Bondorf. Improving binding times without explicit cps-conversion. In 1992 ACM Conference on Lisp and Functional Programming. San Francisco, California. LISP Pointers, vol. V, no. 1, pages 1–10, June 1992.

    Google Scholar 

  11. Anders Bondorf. Similix 5.0 Manual. DIKU, University of Copenhagen, Denmark, May 1993. Included in Similix distribution, 82 pages.

    Google Scholar 

  12. Anders Bondorf and Jens Palsberg. Compiling actions by partial evaluation. In FPCA’ 93, Conference on Functional Programming and Computer Architecture, Copenhagen, Denmark, pages 308–317. ACM, June 1993.

    Google Scholar 

  13. Lars Birkedal and Morten Welinder. Hand-writing program generator generators. In M. Hermenegildo and J. Penjam, editors, Programming Language Implementation and Logic Programming. Proceedings, volume 844 of LNCS, pages 198–214, Madrid, Spain, 1994. Springer-Verlag.

    Chapter  Google Scholar 

  14. Charles Consel. Analyse de programmes, Evaluation partielle et Génération de compilateurs. PhD thesis, LITP, University of Paris 6, France, June 1989. In French.

    Google Scholar 

  15. Charles Consel. A tour of Schism: a partial evaluation system for higher-order applicative languages. In Proceedings of the Symposium on Partial Evaluation and Semantics-Based Program Manipulation, pages 145–154. ACM Press, 1993.

    Google Scholar 

  16. Yoshihiko Futamura and Kenroku Nogi. Generalized partial computation. In Dines Bjørner, Andrei P. Ershov, and Neil D. Jones, editors, Partial Evaluation and Mixed Computation, pages 133–151. North-Holland, 1988.

    Google Scholar 

  17. Carsten K. Gomard and Neil D. Jones. A partial evaluator for the untyped lambda calculus. Journal of Functional Programming, 1(1):21–69, January 1991.

    Article  MathSciNet  MATH  Google Scholar 

  18. Robert Glück and Jesper Jørgensen. Generating optimizing specializers. In IEEE International Conference on Computer Languages, pages 183–194. IEEE Computer Society Press, 1994.

    Google Scholar 

  19. Robert Glück and Jesper Jørgensen. Generating transformers for deforestation and supercompilation. In B. Le Charlier, editor, Static Analysis. Proceedings, volume 864 of LNCS, pages 432–448, Namur, Belgium, 1994. Springer-Verlag.

    Chapter  Google Scholar 

  20. Robert Glück and Jesper Jørgensen. An automatic program generator for multilevel specialization. LISP and Symbolic Computation, 10(2):113–158, 1997.

    Article  Google Scholar 

  21. Carsten K. Gomard. Higher order partial evaluation — hope for the lambda calculus. Master’s thesis, DIKU, University of Copenhagen, Denmark, student report 89-9-11, September 1989.

    Google Scholar 

  22. Sheila Harnett and Margaret Montenyohl. Towards effecient compilation of a dynamic object-oriented language. In Charles Consel, editor, PEPM’92, ACM SIGPLAN Workshop on Partial Evaluation and Semantics-Based Program Manipulation, pages 82–89, June 1992.

    Google Scholar 

  23. Carsten Kehler Hoist. Language triplets: the Amix approach. In Dines Bjørner, Andrei P. Ershov, and Neil D. Jones, editors, Partial Evaluation and Mixed Computation, pages 167–185. North-Holland, 1988.

    Google Scholar 

  24. Neil D. Jones, Carsten K. Gomard, and Peter Sestoft. Partial Evaluation and Automatic Program Generation. Prentice-Hall, 1993.

    Google Scholar 

  25. Simon L. Peyton Jones, Graham Hutton, and Carsten Kehler Hoist, editors. Functional Programming, Glasgow 1990. Workshops in Computing. Springer-Verlag, August 1991.

    Google Scholar 

  26. Jesper Jørgensen and Michael Leuschel. Efficiently generating efficient generating extensions in Prolog. In O. Danvy, R. Glück, and P. Thiemann, editors, Proceedings Dagstuhl Seminar on Partial Evaluation, pages 263–283, Schloss Dagstuhl, Germany, February 1996. Springer-Verlag.

    Google Scholar 

  27. Jesper Jørgensen. Generating a pattern matching compiler by partial evaluation. In Graham Hutton, and Carsten Kehler Hoist, editors. Functional Programming, Glasgow 1990. Workshops in Computing. Springer-Verlag [25], pages 177–195, 1991.

    Google Scholar 

  28. Jesper Jørgensen. Compiler generation by partial evaluation. Master’s thesis, DIKU, University of Copenhagen, Denmark, University of Copenhagen, Denmark, Jan 1992.

    Google Scholar 

  29. Jesper Jørgensen. Generating a compiler for a lazy language by partial evaluation. In Nineteenth Annual ACM SIGACT-SIGPLAN Symposium on Principles of Programming Languages. Albuquerque, New Mexico, pages 258–268, January 1992.

    Google Scholar 

  30. Neil D. Jones, Peter Sestoft, and Harald Søndergaard. An experiment in partial evaluation: the generation of a compiler generator. In J.-P. Jouannaud, editor, Rewriting Techniques and Applications, Dijon, France. LNCS 202, pages 124–140. Springer-Verlag, 1985.

    Chapter  Google Scholar 

  31. Karoline Malmkjær. Predicting properties of residual programs. In Charles Consel, editor, PEPM’92, ACM SIGPLAN Workshop on Partial Evaluation and Semantics-Based Program Manipulation, pages 8–13, June 1992. Available as Technical Report YALEU/DCS/RR-909 from Yale University.

    Google Scholar 

  32. Christian Mossin. Similix binding time debugger manual, system version 4.0. In cluded in Similix distribution, September 1991.

    Google Scholar 

  33. Christian Mossin. Partial evaluation of general parsers (extended abstract). In David Schmidt, editor, A CM SIGPLAN Symposium on Partial Evaluation and Semantics-Based Program Manipulation, PEPM’93, Copenhagen, Denmark, June 1993.

    Google Scholar 

  34. Bernhard Rytz and Marc Gengler. A polyvariant binding time analysis. In Charles Consel, editor, PEPM’92, ACM SIGPLAN Workshop on Partial Evaluation and Semantics-Based Program Manipulation, pages 21–28, June 1992. Available as Technical Report YALEU/DCS/RR-909 from Yale University.

    Google Scholar 

  35. Michael Sperber and Peter Thiemann. The essence of LR parsing. In PEPM’95, ACM SIGPLAN Workshop on Partial Evaluation and Semantics-Based Program Manipulation, pages 146–155. ACM, ACM Press, june 1995.

    Google Scholar 

  36. Valentin F. Turchin. The concept of a supercompiler. Transactions on Programming Languages and Systems, 8(3):292–325, 1986.

    Article  MATH  Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 1999 Springer-Verlag Berlin Heidelberg

About this paper

Cite this paper

Jørgensen, J. (1999). Similix: A Self-Applicable Partial Evaluator for Scheme. In: Hatcliff, J., Mogensen, T.Æ., Thiemann, P. (eds) Partial Evaluation. DIKU 1998. Lecture Notes in Computer Science, vol 1706. Springer, Berlin, Heidelberg. https://doi.org/10.1007/3-540-47018-2_3

Download citation

  • DOI: https://doi.org/10.1007/3-540-47018-2_3

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-540-66710-0

  • Online ISBN: 978-3-540-47018-2

  • eBook Packages: Springer Book Archive

Publish with us

Policies and ethics