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.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
References
Lars Ole Andersen. Program Analysis and Specialization for the C Programming Language. PhD thesis, DIKU, University of Copenhagen, May 1994. (DIKU report 94/19).
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.
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.
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.
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.
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.
Anders Bondorf. Self-Applicable Partial Evaluation. PhD thesis, DIKU, University of Copenhagen, Denmark, 1990.
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.
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.
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.
Anders Bondorf. Similix 5.0 Manual. DIKU, University of Copenhagen, Denmark, May 1993. Included in Similix distribution, 82 pages.
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.
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.
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.
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.
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.
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.
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.
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.
Robert Glück and Jesper Jørgensen. An automatic program generator for multilevel specialization. LISP and Symbolic Computation, 10(2):113–158, 1997.
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.
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.
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.
Neil D. Jones, Carsten K. Gomard, and Peter Sestoft. Partial Evaluation and Automatic Program Generation. Prentice-Hall, 1993.
Simon L. Peyton Jones, Graham Hutton, and Carsten Kehler Hoist, editors. Functional Programming, Glasgow 1990. Workshops in Computing. Springer-Verlag, August 1991.
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.
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.
Jesper Jørgensen. Compiler generation by partial evaluation. Master’s thesis, DIKU, University of Copenhagen, Denmark, University of Copenhagen, Denmark, Jan 1992.
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.
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.
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.
Christian Mossin. Similix binding time debugger manual, system version 4.0. In cluded in Similix distribution, September 1991.
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.
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.
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.
Valentin F. Turchin. The concept of a supercompiler. Transactions on Programming Languages and Systems, 8(3):292–325, 1986.
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights 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