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.
Keywords
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.
This is a preview of subscription content, log in via an institution.
Buying options
Tax calculation will be finalised at checkout
Purchases are for personal use only
Learn about institutional subscriptionsPreview
Unable to display preview. Download preview PDF.
References
Field, A.J., Harrison, P.G.: Functional Programming. Addison—Wesley (1988).
Peyton Jones, S.L.: The Implementation of Functional Programming Languages. Prentice—Hall (1987).
Cohen, J.: Garbage Collection of Linked Data Structures. Computing Surveys 13, 341–367 (1981).
Appel, A.W.: Garbage collection can be faster than stack allocation. Inform. Proc. Letters 25, 275–279 (1978).
Kernighan, B., Ritchie D.M.: The C Programming Language. 2nd. Ed. Prentice Hall (1988).
Pepper, P. (ed.): The Programming Language OPAL-1. Technical Report May-91, TU-Berlin (1991).
Milner, R., Tofte, M., Harper, R.: The Definition of Standard ML. MIT Press (1990).
Perry, N.: Hope+. Dept. of Computing, Imperial College London Internal Report IC/FPR/LANG /2. 5. 1 /7 (1988).
Bauer, F.L., Wössner, H.: Algorithmic Language and Program Development. Springer (1981).
Appel, A.W., MacQueen, D.B.: A Standard ML Compiler. In: Functional Programming Languages and Computer Architecture, (ed.) Kahn G, LNCS 274, 301324 (1987).
Aho, A.V., Hoperaft, J.E., Ullman, J D: Data Structures and Algorithms. Addison—Wesley (1983).
Hecht, M.S.: Flow Analysis of Computer Programs. Elsevier North-Holland (1981).
Weinstock, C.B., Wulf, W.A.: Quick Fit: An Efficient Algorithm for Heap Storage Allocation. SIGPLAN Notices 23, 141–148, (1988).
Weizenbaum, J.: Symmetric List Processor. Communications of the ACM 6, 524544 (1963).
Clark, D.W., Green, C.C.: A Note on Shared List Structure in Lisp. Inform. Proc. Letters 7, 312–314 (1978).
Stansifer, R.: Imperative versus Functional. SIGPLAN Notices 25, 69–72 (1990).
Aasa, A., Holmström, S., Nilsson, C.: An Efficiency Comparison of Purely Functional Arrays. BIT 28, 490–503 (1988).
Leroy, X.: The ZINC Experiment: An Economical Implementation of the ML Language. INRIA, Rapports Techniques No. 117 (1990).
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights 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