Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
skip to main content
10.1145/174675.177855acmconferencesArticle/Chapter ViewAbstractPublication PagespoplConference Proceedingsconference-collections
Article
Free access

Implementation of the typed call-by-value λ-calculus using a stack of regions

Published: 01 February 1994 Publication History
  • Get Citation Alerts
  • Abstract

    We present a translation scheme for the polymorphically typed call-by-value λ-calculus. All runtime values, including function closures, are put into regions. The store consists of a stack of regions. Region inference and effect inference are used to infer where regions can be allocated and de-allocated. Recursive functions are handled using a limited form of polymorphic recursion. The translation is proved correct with respect to a store semantics, which models as a region-based run-time system. Experimental results suggest that regions tend to be small, that region allocation is frequent and that overall memory demands are usually modest, even without garbage collection.

    References

    [1]
    J. Tiuryn A. J. Kfoury and P. Urzyczyn. Type reconstruction in the presence of polymorphic recursion. A CM Transactions on Programming Languages and Systems, 15(2):290-311, April 1993.
    [2]
    Andrew W. Appel. Compiling with Continuations. Cambridge University Press, 1992.
    [3]
    Henry G. Baker. Unify and conquer (garbage collection, updating, aliasing, ..) in functional languages. In Proceedings of the 1990 ACM Conference on Lisp and Functional Programming, pages 218-226, June 1990.
    [4]
    H.G. Baker. List processing in real time on a serial computer. Communications of the A CM, 21(4):280-294, April 1978.
    [5]
    David R. Chase, Safety considerations for storage allocation optimizations. In Proceedings of the SIGPLAN '88 Conference on Programming Language Design and Implementation, pages 1- 10, ACM Press, June 22-24 1988.
    [6]
    J. M. Lucassen D. K. Gifford, P. Jouvelot and M.A. Sheldon. FX-87 Reference Manual. Technical Report MIT/LCS/TR-407, MIT Laboratory for Computer Science, Sept 1987.
    [7]
    L. Damas and R. Milner. Principal type schemes for functional programs. In Proc. 9th Annual ACM Symp. on Principles of Programming Languages, pages 207-212, Jan. 1982.
    [8]
    Jo~lle Despeyroux. Proof of translation in natural semantics. In Proc. of the 1st Symp. on Logic in Computer Science, IEEE, Cambridge, USA, 1986.
    [9]
    E. W. Dijkstra. Recursive programming. Numerische Math, 2:312-318, 1960. Also in Rosen: "Programming Systems and Languages", McGraw-Hill, 1967.
    [10]
    Michael Georgeff. Transformations and reduction strategies for typed lambda expressions. A CM Transactions on Programming Languages and Systems, 6(4):603-631, Oct 1984.
    [11]
    Barry Hayes. Using key object opportunism to collect old objects. In Proceedings: Conference on Object-Oriented Programming Systems, Languages and Applications, Sigplan Notices, Vol 26, Number 11, 1991.
    [12]
    Fritz Henglein. Type inference with polymorphic recursion. ACM Transactions on Programming Languages and Systems, 15(2):253, April 1993.
    [13]
    Paul Hudak. A semantic model of reference counting and its abstraction. In A CM Symposium on List and Functional Programming, pages 351- 363, 1986.
    [14]
    Pierre Jouvelot and D.K. Gifford. Algebraic reconstruction of types and effects. In Proceedings of the 18th A CM Symposium on Principles of Programming Languages (POPL), 1991.
    [15]
    Hiroyuki Seki Katsuro Inoue and Hikaru Yagi. Analysis of functional programs to detect runtime garbage cells. A CM Transactions on Programming Languages and Systems, 10(4):555- 578, 1988.
    [16]
    /~ke Wikstr6m. Functional Programming Using Standard ML. Series in Computer Science, Prentice Hall, 1987.
    [17]
    A. Kfoury~ J. Tiuryn, and P. Urzyczyn. The undecidability of the semi-unification problem. In Proc. 22nd Annual A CM Syrup. on Theory of Computation (STOC), Baltimore, Maryland, pages 468-476, May 1990.
    [18]
    Donald E. Knuth. Fundamental Algorithms. Volume 1 of The Art of Computer Programming, Addison-Wesley, 1972.
    [19]
    Henry Lieberman and Carl Hewitt. A real-time garbage collector based on the lifetimes of objects. Communications of the A CM, 26(6):419- 429, June 1983.
    [20]
    J. M. Lucassen. Types and Effects, towards the integration of functional and imperative programming. PhD thesis, MIT Laboratory for Computer Science, 1987. MIT/LCS/TR-408.
    [21]
    J.M. Lucassen and D.K. Gifford. Polymorphic effect systems. In Proceedings of the 1988 A CM Conference on Principles of Programming Languages, 1988.
    [22]
    R. Milner. A theory of type polymorphism in programming. J. Computer and System Sciences, 17:348-375, 1978.
    [23]
    Robin Milner and Mads Torte. Co-induction in relational semantics. Theoretical Computer Science, 87:209-220, 1991.
    [24]
    Robin Milner, Mads Torte, and Robert Harper. The Definition of Standard ML. MIT Press, 1990.
    [25]
    F. L. Morris. Advice on structuring compilers and proving them correct. In Proc. A CM Symp. on Principles of Programming Languages, 1973.
    [26]
    A. Mycroft. Polymorphic type schemes and recursive definitions. In Proc. 6th Int. Conf. on Programming, LNCS 167, 1984.
    [27]
    Laurence C. Paulson. ML for the Working Programmer. Cambridge University Press, 1991.
    [28]
    Cristina Ruggieri and Thomas P. Murtagh. Lifetime analysis of dynamically allocated objects. In Proceedings of the 15th Annual A CM Symposium on Principles of Programming Languages, pages 285-293, January 1988.
    [29]
    Jean-Pierre Talpin. Theoretical and practical aspects of type and effect inference. Doctoral Dissertation. May 1993. Also available as Research Report EMP/CRI/A-236, Ecole des Mines de Paris.
    [30]
    Jean-Pierre Talpin and Pierre Jouvelot. Polymorphic type, region and effect inference. Journal of Functional Programming, 2(3), 1992.
    [31]
    Mads Tofte and Jean-Pierre Talpin. A Theory of Stack Allocation in Polymorphicalty Typed Languages. Technical Report DIKU-report 93/15, Department of Computer Science, University of Copenhagen, 1993.

    Cited By

    View all
    • (2024)Garbage Collection for Mostly Serialized HeapsProceedings of the 2024 ACM SIGPLAN International Symposium on Memory Management10.1145/3652024.3665512(1-14)Online publication date: 20-Jun-2024
    • (2024)Formally understanding Rust’s ownership and borrowing system at the memory levelFormal Methods in System Design10.1007/s10703-024-00460-3Online publication date: 9-Jul-2024
    • (2022)Memory optimizations in an array languageProceedings of the International Conference on High Performance Computing, Networking, Storage and Analysis10.5555/3571885.3571926(1-15)Online publication date: 13-Nov-2022
    • Show More Cited By

    Recommendations

    Comments

    Information & Contributors

    Information

    Published In

    cover image ACM Conferences
    POPL '94: Proceedings of the 21st ACM SIGPLAN-SIGACT symposium on Principles of programming languages
    February 1994
    492 pages
    ISBN:0897916360
    DOI:10.1145/174675
    Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

    Sponsors

    Publisher

    Association for Computing Machinery

    New York, NY, United States

    Publication History

    Published: 01 February 1994

    Permissions

    Request permissions for this article.

    Check for updates

    Qualifiers

    • Article

    Conference

    POPL94

    Acceptance Rates

    POPL '94 Paper Acceptance Rate 39 of 173 submissions, 23%;
    Overall Acceptance Rate 824 of 4,130 submissions, 20%

    Upcoming Conference

    POPL '25

    Contributors

    Other Metrics

    Bibliometrics & Citations

    Bibliometrics

    Article Metrics

    • Downloads (Last 12 months)149
    • Downloads (Last 6 weeks)19
    Reflects downloads up to 11 Aug 2024

    Other Metrics

    Citations

    Cited By

    View all
    • (2024)Garbage Collection for Mostly Serialized HeapsProceedings of the 2024 ACM SIGPLAN International Symposium on Memory Management10.1145/3652024.3665512(1-14)Online publication date: 20-Jun-2024
    • (2024)Formally understanding Rust’s ownership and borrowing system at the memory levelFormal Methods in System Design10.1007/s10703-024-00460-3Online publication date: 9-Jul-2024
    • (2022)Memory optimizations in an array languageProceedings of the International Conference on High Performance Computing, Networking, Storage and Analysis10.5555/3571885.3571926(1-15)Online publication date: 13-Nov-2022
    • (2022)Compiling a functional array language with non-semantic memory informationProceedings of the 34th Symposium on Implementation and Application of Functional Languages10.1145/3587216.3587218(1-13)Online publication date: 31-Aug-2022
    • (2022)Linear types for large-scale systems verificationProceedings of the ACM on Programming Languages10.1145/35273136:OOPSLA1(1-28)Online publication date: 29-Apr-2022
    • (2022)A flexible type system for fearless concurrencyProceedings of the 43rd ACM SIGPLAN International Conference on Programming Language Design and Implementation10.1145/3519939.3523443(458-473)Online publication date: 9-Jun-2022
    • (2022)A separation logic for heap space under garbage collectionProceedings of the ACM on Programming Languages10.1145/34986726:POPL(1-28)Online publication date: 12-Jan-2022
    • (2022)Memory Optimizations in an Array LanguageSC22: International Conference for High Performance Computing, Networking, Storage and Analysis10.1109/SC41404.2022.00036(1-15)Online publication date: Nov-2022
    • (2021)Polymorphic Iterable Sequential Effect SystemsACM Transactions on Programming Languages and Systems10.1145/345027243:1(1-79)Online publication date: 17-Apr-2021
    • (2020)The history of Standard MLProceedings of the ACM on Programming Languages10.1145/33863364:HOPL(1-100)Online publication date: 12-Jun-2020
    • Show More Cited By

    View Options

    View options

    PDF

    View or Download as a PDF file.

    PDF

    eReader

    View online with eReader.

    eReader

    Get Access

    Login options

    Media

    Figures

    Other

    Tables

    Share

    Share

    Share this Publication link

    Share on social media