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

Guarded recursive datatype constructors

Published: 15 January 2003 Publication History

Abstract

We introduce a notion of guarded recursive (g.r.) datatype constructors, generalizing the notion of recursive datatypes in functional programming languages such as ML and Haskell. We address both theoretical and practical issues resulted from this generalization. On one hand, we design a type system to formalize the notion of g.r. datatype constructors and then prove the soundness of the type system. On the other hand, we present some significant applications (e.g., implementing objects, implementing staged computation, etc.) of g.r. datatype constructors, arguing that g.r. datatype constructors can have far-reaching consequences in programming. The main contribution of the paper lies in the recognition and then the formalization of a programming notion that is of both theoretical interest and practical use.

References

[1]
L. Augustsson. Implementing Haskell overloading. In Functional Programming Languages and Computer Architecture, 93.]]
[2]
K. B. Bruce. Foundations of Object-Oriented Languages. The MIT Press, Cambridge, MA, 2002.]]
[3]
C. Chen and H. Xi. Implementing typed meta-programming. Available at http://www.cs.bu.edu/char126hwxi/academic/papers/TMP.ps, November 2002.]]
[4]
A. Church. A formulation of the simple type theory of types. Journal of Symbolic Logic, 5:56--68, 1940.]]
[5]
K. Crary and S. Weirich. Flexible Type Analysis. In Proceedings of International Conference on Functional Programming (ICFP '99), Paris, France, 1999.]]
[6]
K. Crary, S. Weirich, and G. Morrisett. Intensional polymorphism in type-erasure semantics. In Proceedings of the International Conference on Functional Programming (ICFP '98), pages 301--312, Baltimore, MD, September 1998.]]
[7]
R. Davies and F. Pfenning. A Modal Analysis of Staged Computation. Journal of ACM, 2002.]]
[8]
C. Dubois, F. Rouaix, and P. Weis. Generic Polymorphism. In Proceeding of the 22th ACM Symposium on Principles of Programming Languages (POPL '95), pages 118--129, London, UK, January 1995.]]
[9]
A. Goldenberg and D. Robson. Smalltalk-80: The Language and Its Implementation. Addison Wesley, 1983.]]
[10]
R. W. Harper and G. Morrisett. Compiling polymorphism using intensional type analysis. In Conference Record of POPL '95: 22nd ACM SIGPLAN Symposium on Principles of Programming Languages, pages 130--141, San Francisco, 1995.]]
[11]
K. Läufer and M. Odersky. Ploymorphic Type Inference and Abstract Data Types. ACM Transactions of Programming Languages and Systems (TOPLAS), 16(5):1411--1430, September 1994.]]
[12]
X. Leroy. Unboxed objects and polymorphic typing. In Conference Record of the Nineteenth Annual ACM SIGPLAN Symposium on Principles of Programming Languages, pages 177--188, Albuquerque, New Mexico, January 1992.]]
[13]
C. Liu. Smalltalk, Objects, and Design. Manning Publications Co., Greenwich, CT 06830, 1996.]]
[14]
R. Milner, M. Tofte, R. W. Harper, and D. MacQueen. The Definition of Standard ML (Revised). MIT Press, Cambridge, Massachusetts, 1997.]]
[15]
M. Neubauer, P. Thiemann, M. Gasbichler, and M. Sperber. A Functional Notation for Functional Dependencies. In Proceedings of 2001 Haskell Workshop, pages 101--120, Florence, Italy, September 2001.]]
[16]
A. Ohori and K. Kato. Semantics for communication primitives in a polymorphic language. In Conference Record of the Twentieth Annual ACM SIGPLAN Symposium on Principles of Programming Languages, pages 99--112, Charleston, SC, January 1993.]]
[17]
S. Peyton Jones et al. Haskell~98 -- A non-strict, purely functional language. Available at http://www.haskell.org/onlinereport/, Feb. 1999.]]
[18]
F. Pfenning. Computation and Deduction. Cambridge University Press, 2002.]]
[19]
W. Taha and T. Sheard. MetaML and multi-stage programming with explicit annotations. Theoretical Computer Science, 248(1-2):211--242, 2000.]]
[20]
A. Tolmach. Tag-free garbage collection using explicit type parameters. In Proceedings of ACM Conference on LISP and Functional Programming, pages 1--11, Orlando, FL, June 1994.]]
[21]
V. Trifonov, B. Saha, and Z. Shao. Fully Reflexive Intensional Type Analysis. In Proceedings of the International Conference on Functional Programming, September 1999.]]
[22]
S. Weirich. Encoding intensional type analysis. In D. Sands, editor, Programming Languages and Systems: 10th European Symposium on Programming, ESOP 2001 Held as Part of the Joint European Conferences on Theory and Practice of Software, ETAPS 2001 Genova, Italy, April 2--6, 2001, volume 2028 of Lecture Notes in Computer Science, pages 92--106. Springer, 2001.]]
[23]
H. Xi. Dependent Types in Practical Programming. PhD thesis, Carnegie Mellon University, 1998. pp. viii+189. Available at http://www.cs.cmu.edu/char126hwxi/DML/thesis.ps.]]
[24]
H. Xi, C. Chen, and G. Chen. Guarded Recursive Datatype Constructors, 2002. Available at http://www.cs.bu.edu/char126hwxi/GRecTypecon/.]]
[25]
H. Xi and F. Pfenning. Dependent types in practical programming. In Proceedings of ACM SIGPLAN Symposium on Principles of Programming Languages, pages 214--227, San Antonio, Texas, January 1999.]]

Cited By

View all
  • (2024)Intensional FunctionsProceedings of the ACM on Programming Languages10.1145/36897148:OOPSLA2(87-112)Online publication date: 8-Oct-2024
  • (2024)When Subtyping Constraints Liberate: A Novel Type Inference Approach for First-Class PolymorphismProceedings of the ACM on Programming Languages10.1145/36328908:POPL(1418-1450)Online publication date: 5-Jan-2024
  • (2024)The Essence of Generalized Algebraic Data TypesProceedings of the ACM on Programming Languages10.1145/36328668:POPL(695-723)Online publication date: 5-Jan-2024
  • Show More Cited By

Recommendations

Comments

Information & Contributors

Information

Published In

cover image ACM Conferences
POPL '03: Proceedings of the 30th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
January 2003
308 pages
ISBN:1581136285
DOI:10.1145/604131
  • cover image ACM SIGPLAN Notices
    ACM SIGPLAN Notices  Volume 38, Issue 1
    January 2003
    298 pages
    ISSN:0362-1340
    EISSN:1558-1160
    DOI:10.1145/640128
    Issue’s Table of Contents
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: 15 January 2003

Permissions

Request permissions for this article.

Check for updates

Author Tag

  1. guarded recursive datatype constructors

Qualifiers

  • Article

Conference

POPL03

Acceptance Rates

POPL '03 Paper Acceptance Rate 24 of 126 submissions, 19%;
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)49
  • Downloads (Last 6 weeks)5
Reflects downloads up to 25 Dec 2024

Other Metrics

Citations

Cited By

View all
  • (2024)Intensional FunctionsProceedings of the ACM on Programming Languages10.1145/36897148:OOPSLA2(87-112)Online publication date: 8-Oct-2024
  • (2024)When Subtyping Constraints Liberate: A Novel Type Inference Approach for First-Class PolymorphismProceedings of the ACM on Programming Languages10.1145/36328908:POPL(1418-1450)Online publication date: 5-Jan-2024
  • (2024)The Essence of Generalized Algebraic Data TypesProceedings of the ACM on Programming Languages10.1145/36328668:POPL(695-723)Online publication date: 5-Jan-2024
  • (2023)Weighted Refinement Types for Counterpoint CompositionProceedings of the 11th ACM SIGPLAN International Workshop on Functional Art, Music, Modelling, and Design10.1145/3609023.3609804(2-7)Online publication date: 30-Aug-2023
  • (2022)Coinduction inductively: mechanizing coinductive proofs in Liquid HaskellProceedings of the 15th ACM SIGPLAN International Haskell Symposium10.1145/3546189.3549922(1-12)Online publication date: 6-Sep-2022
  • (2022)(Deep) induction rules for GADTsProceedings of the 11th ACM SIGPLAN International Conference on Certified Programs and Proofs10.1145/3497775.3503680(324-337)Online publication date: 17-Jan-2022
  • (2022)Characterizing Functions Mappable over GADTsProgramming Languages and Systems10.1007/978-3-031-21037-2_7(135-154)Online publication date: 25-Nov-2022
  • (2021)Implementing path-dependent GADT reasoning for Scala 3Proceedings of the 12th ACM SIGPLAN International Symposium on Scala10.1145/3486610.3486892(22-32)Online publication date: 17-Oct-2021
  • (2021)A simpler encoding of indexed typesProceedings of the 6th ACM SIGPLAN International Workshop on Type-Driven Development10.1145/3471875.3472991(14-22)Online publication date: 18-Aug-2021
  • (2021)Bidirectional TypingACM Computing Surveys10.1145/345095254:5(1-38)Online publication date: 25-May-2021
  • Show More Cited By

View Options

Login options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media