Skip to main content

Generating Efficient Portable Code for a Strict Applicative Language

  • Conference paper
Book cover Declarative Programming, Sasbachwalden 1991

Part of the book series: Workshops in Computing ((WORKSHOPS COMP.))

Abstract

We discuss the overall style of code generation for the strict applicative language OPAL. It differs in two respects from the usual declarative language implementations. Firstly, instead of compiling to an abstract machine, we use C as the target language, inheriting many of the machine-dependent low-level optimizations nowadays performed by C compilers. Secondly, instead of using a copying or scanning garbage collector, we use an optimized variant of the classical reference counting scheme, resulting in a residual garbage collector and the capability to perform run-time-detected selective update on recursive data structures.

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. Field, A.J., Harrison, P.G.: Functional Programming. Addison—Wesley (1988).

    Google Scholar 

  2. Peyton Jones, S.L.: The Implementation of Functional Programming Languages. Prentice—Hall (1987).

    Google Scholar 

  3. Cohen, J.: Garbage Collection of Linked Data Structures. Computing Surveys 13, 341–367 (1981).

    Article  MathSciNet  Google Scholar 

  4. Appel, A.W.: Garbage collection can be faster than stack allocation. Inform. Proc. Letters 25, 275–279 (1978).

    Article  Google Scholar 

  5. Kernighan, B., Ritchie D.M.: The C Programming Language. 2nd. Ed. Prentice Hall (1988).

    Google Scholar 

  6. Pepper, P. (ed.): The Programming Language OPAL-1. Technical Report May-91, TU-Berlin (1991).

    Google Scholar 

  7. Milner, R., Tofte, M., Harper, R.: The Definition of Standard ML. MIT Press (1990).

    Google Scholar 

  8. Perry, N.: Hope+. Dept. of Computing, Imperial College London Internal Report IC/FPR/LANG /2. 5. 1 /7 (1988).

    MathSciNet  Google Scholar 

  9. Bauer, F.L., Wössner, H.: Algorithmic Language and Program Development. Springer (1981).

    Google Scholar 

  10. Appel, A.W., MacQueen, D.B.: A Standard ML Compiler. In: Functional Programming Languages and Computer Architecture, (ed.) Kahn G, LNCS 274, 301324 (1987).

    Google Scholar 

  11. Aho, A.V., Hoperaft, J.E., Ullman, J D: Data Structures and Algorithms. Addison—Wesley (1983).

    Google Scholar 

  12. Hecht, M.S.: Flow Analysis of Computer Programs. Elsevier North-Holland (1981).

    Google Scholar 

  13. Weinstock, C.B., Wulf, W.A.: Quick Fit: An Efficient Algorithm for Heap Storage Allocation. SIGPLAN Notices 23, 141–148, (1988).

    Article  Google Scholar 

  14. Weizenbaum, J.: Symmetric List Processor. Communications of the ACM 6, 524544 (1963).

    Google Scholar 

  15. Clark, D.W., Green, C.C.: A Note on Shared List Structure in Lisp. Inform. Proc. Letters 7, 312–314 (1978).

    Article  Google Scholar 

  16. Stansifer, R.: Imperative versus Functional. SIGPLAN Notices 25, 69–72 (1990).

    Article  Google Scholar 

  17. Aasa, A., Holmström, S., Nilsson, C.: An Efficiency Comparison of Purely Functional Arrays. BIT 28, 490–503 (1988).

    MATH  MathSciNet  Google Scholar 

  18. Leroy, X.: The ZINC Experiment: An Economical Implementation of the ML Language. INRIA, Rapports Techniques No. 117 (1990).

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 1992 Springer-Verlag London

About this paper

Cite this paper

Schulte, W., Grieskamp, W. (1992). Generating Efficient Portable Code for a Strict Applicative Language. In: Darlington, J., Dietrich, R. (eds) Declarative Programming, Sasbachwalden 1991. Workshops in Computing. Springer, London. https://doi.org/10.1007/978-1-4471-3794-8_16

Download citation

  • DOI: https://doi.org/10.1007/978-1-4471-3794-8_16

  • Publisher Name: Springer, London

  • Print ISBN: 978-3-540-19735-5

  • Online ISBN: 978-1-4471-3794-8

  • eBook Packages: Springer Book Archive

Publish with us

Policies and ethics