I got plenty o’ nuttin’

McBride, Conor; Lindley, Sam and McBride, Conor and Trinder, Phil and Sannella, Don, eds. (2016) I got plenty o’ nuttin’. In: A List of Successes That Can Change the World. Lecture Notes in Computer Science (including subseries Lecture Notes in Artificial Intelligence and Lecture Notes in Bioinformatics) . Springer, Switzerland, pp. 207-233. ISBN 9783319309354 (https://doi.org/10.1007/978-3-319-30936-1_12)

Full text not available in this repository.Request a copy

Abstract

Work to date on combining linear types and dependent types has deliberately and successfully avoided doing so. Entirely fit for their own purposes, such systems wisely insist that types depend only on the replicable sublanguage, thus sidestepping the issue of counting uses of limited-use data either within types or in ways which are only really needed to shut the typechecker up. As a result, the linear implication ('lollipop') stubbornly remains a non-dependent S ⊸ T. This paper defines and establishes the basic metatheory of a type theory supporting a 'dependent lollipop' (x:S) ⊸ T[x], where what the input used to be is in some way commemorated by the type of the output. For example, we might convert list to length-indexed vectors in place by a function with type (l: List X) ⊸ Vector X (length l). Usage is tracked with resource annotations belonging to an arbitrary rig, or 'riNg without Negation'. The key insight is to use the rig's zero to mark information in contexts which is present for purposes of contemplation rather than consumption, like a meal we remember fondly but cannot eat twice. We need no runtime copies of l to form the above vector type. We can have plenty of nothing with no additional runtime resource, and nothing is plenty for the construction of dependent types.