Show simple item record

dc.contributor.authorJones, Mark P.
dc.contributor.authorMorris, J. Garrett
dc.contributor.authorEisenberg, Richard A.
dc.date.accessioned2021-02-09T20:20:15Z
dc.date.available2021-02-09T20:20:15Z
dc.date.issued2020-01
dc.identifier.citationMark P. Jones, J. Garrett Morris, and Richard A. Eisenberg. 2019. Partial type constructors: or, making ad hoc datatypes less ad hoc. Proc. ACM Program. Lang. 4, POPL, Article 40 (January 2020), 28 pages. DOI:https://doi.org/10.1145/3371108en_US
dc.identifier.urihttp://hdl.handle.net/1808/31400
dc.descriptionThis work is licensed under a Creative Commons Attribution 4.0 International License.en_US
dc.description.abstractFunctional programming languages assume that type constructors are total. Yet functional programmers know better: counterexamples range from container types that make limiting assumptions about their contents (e.g., requiring computable equality or ordering functions) to type families with defining equations only over certain choices of arguments. We present a language design and formal theory of partial type constructors, capturing the domains of type constructors using qualified types. Our design is both simple and expressive: we support partial datatypes as first-class citizens (including as instances of parametric abstractions, such as the Haskell Functor and Monad classes), and show a simple type elaboration algorithm that avoids placing undue annotation burden on programmers. We show that our type system rejects ill-defined types and can be compiled to a semantic model based on System F. Finally, we have conducted an experimental analysis of a body of Haskell code, using a proof-of-concept implementation of our system; while there are cases where our system requires additional annotations, these cases are rarely encountered in practical Haskell code.en_US
dc.publisherAssociation for Computing Machinery (ACM)en_US
dc.rightsCopyright © 2019 Owner/Author.en_US
dc.rights.urihttp://creativecommons.org/licenses/by/4.0/en_US
dc.subjectTheory of computationen_US
dc.subjectSoftware and its engineeringen_US
dc.subjectData types and structuresen_US
dc.subjectType constructorsen_US
dc.subjectParametric polymorphismen_US
dc.titlePartial type constructors: Or, making ad hoc datatypes less ad hocen_US
dc.typeArticleen_US
kusw.kuauthorMorris, J. Garrett
kusw.kudepartmentElectrical Engineering & Computer Scienceen_US
dc.identifier.doi10.1145/3371108en_US
kusw.oaversionScholarly/refereed, publisher versionen_US
kusw.oapolicyThis item meets KU Open Access policy criteria.en_US
dc.rights.accessrightsopenAccessen_US


Files in this item

Thumbnail

This item appears in the following Collection(s)

Show simple item record

Copyright © 2019 Owner/Author.
Except where otherwise noted, this item's license is described as: Copyright © 2019 Owner/Author.