Proceedings of the 4th ACM SIGPLAN International Workshop on Type-Driven Development最新文献

筛选
英文 中文
Inductive types deconstructed: the calculus of united constructions 归纳类型的解构:联合构造的演算
Stefan Monnier
{"title":"Inductive types deconstructed: the calculus of united constructions","authors":"Stefan Monnier","doi":"10.1145/3331554.3342607","DOIUrl":"https://doi.org/10.1145/3331554.3342607","url":null,"abstract":"Algebraic data types and inductive types like those of the Calculus of Inductive Constructions (CIC) are the bread and butter of statically typed functional programming languages. They conveniently combine in a single package product types, sum types, recursive types, and indexed types. But this also makes them somewhat heavyweight: for example, tuples have to be defined as \"degenerate\" single constructor inductive types, and extraction of a single field becomes a laborious full case-analysis on the object. We consider this to be unsatisfactory. In this article, we develop an alternative presentation of CIC's inductive types where the various elements are provided separately, such that inductive types are built on top of tuples and sums rather than the other way around. The resulting language is lower-level yet we show it can be translated to to a predicative version of the Calculus of Inductive Constructions in a type-preserving way. An additional benefit is that it can conveniently give a precise type to the default branch of \"case\" statements.","PeriodicalId":413151,"journal":{"name":"Proceedings of the 4th ACM SIGPLAN International Workshop on Type-Driven Development","volume":"166 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2019-08-18","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"121347728","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 1
How to do proofs: practically proving properties about effectful programs' results (functional pearl) 如何证明:实际证明有效程序结果的性质(函数珍珠)
K. Jacobs, Andreas Nuyts, Dominique Devriese
{"title":"How to do proofs: practically proving properties about effectful programs' results (functional pearl)","authors":"K. Jacobs, Andreas Nuyts, Dominique Devriese","doi":"10.1145/3331554.3342603","DOIUrl":"https://doi.org/10.1145/3331554.3342603","url":null,"abstract":"Dependently-typed languages are great for stating and proving properties of pure functions. We can reason about them modularly (state and prove their properties independently of other functions) and non-intrusively (without modifying their implementation). But what if we are interested in properties about the results of effectful computations? Ideally, we could keep on stating and proving them just as nicely. This pearl shows we can. We formalise a way to lift a property about values to a property about effectful computations producing such values, and we demonstrate that we need not make any sacrifices when reasoning about them. In addition to this modular and non-intrusive reasoning, our approach offers independence of the underlying monad and allows for readable proofs whose structure follows that of the code.","PeriodicalId":413151,"journal":{"name":"Proceedings of the 4th ACM SIGPLAN International Workshop on Type-Driven Development","volume":"73 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2019-08-18","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"127379737","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 0
Tic tac types: a gentle introduction to dependently typed programming (functional pearl) Tic tac类型:独立类型编程的简单介绍(functional pearl)
Sean Innes, Nicolas Wu
{"title":"Tic tac types: a gentle introduction to dependently typed programming (functional pearl)","authors":"Sean Innes, Nicolas Wu","doi":"10.1145/3331554.3342606","DOIUrl":"https://doi.org/10.1145/3331554.3342606","url":null,"abstract":"Tic-Tac-Toe is a simple, familiar, classic game enjoyed by many. This pearl is designed to give a flavour of the world of dependent types to the uninitiated functional programmer. We cover a journey from Tic-Tac-Terrible implementations in the harsh world of virtually untyped |Strings|, through the safe haven of vectors that know their own length, and into a Tic-Tac-Titanium version that is too strongly typed for its own good. Along the way we discover something we knew all along; types are great, but in moderation. This lesson is quickly put to use in a more complex recursive version.","PeriodicalId":413151,"journal":{"name":"Proceedings of the 4th ACM SIGPLAN International Workshop on Type-Driven Development","volume":"1 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2019-08-18","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"128689890","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 1
Deferring the details and deriving programs 延迟细节和派生程序
Liam O'Connor
{"title":"Deferring the details and deriving programs","authors":"Liam O'Connor","doi":"10.1145/3331554.3342605","DOIUrl":"https://doi.org/10.1145/3331554.3342605","url":null,"abstract":"A commonly-used technique in dependently-typed programming is to encode invariants about a data structure into its type, thus ensuring that the data structure is correct by construction. Unfortunately, this often necessitates the embedding of explicit proof terms within the data structure, which are not part of the structure conceptually, but merely supplied to ensure that the data invariants are maintained. As the complexity of the specifications in the types increases, these additional terms tend to clutter definitions, reducing readability. We introduce a technique where these proof terms can be supplied later, by constructing the data structure within a proof delay applicative functor. We apply this technique to Trip, our new language for Hoare-logic verification of imperative programs embedded in Agda, where our applicative functor is used as the basis for a verification condition generator, turning the typed holes of Agda into a method for stepwise derivation of a program from its specification in the form of a Hoare triple.","PeriodicalId":413151,"journal":{"name":"Proceedings of the 4th ACM SIGPLAN International Workshop on Type-Driven Development","volume":"162 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2019-08-18","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"115784594","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 1
Generic level polymorphic n-ary functions 通用级多态n元函数
Guillaume Allais
{"title":"Generic level polymorphic n-ary functions","authors":"Guillaume Allais","doi":"10.1145/3331554","DOIUrl":"https://doi.org/10.1145/3331554","url":null,"abstract":"Agda's standard library struggles in various places with n-ary functions and relations. It introduces congruence and substitution operators for functions of arities one and two, and provides users with convenient combinators for manipulating indexed families of arity exactly one. After a careful analysis of the kinds of problems the unifier can easily solve, we design a unifier-friendly representation of n-ary functions. This allows us to write generic programs acting on n-ary functions which automatically reconstruct the representation of their inputs' types by unification. In particular, we can define fully level polymorphic n-ary versions of congruence, substitution and the combinators for indexed families, all requiring minimal user input.","PeriodicalId":413151,"journal":{"name":"Proceedings of the 4th ACM SIGPLAN International Workshop on Type-Driven Development","volume":"2 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2019-08-18","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"128087590","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 0
Constraint-based type-directed program synthesis 基于约束的定向类型程序综合
Peter-Michael Osera
{"title":"Constraint-based type-directed program synthesis","authors":"Peter-Michael Osera","doi":"10.1145/3331554.3342608","DOIUrl":"https://doi.org/10.1145/3331554.3342608","url":null,"abstract":"We explore an approach to type-directed program synthesis rooted in constraint-based type inference techniques. By doing this, we aim to more efficiently synthesize polymorphic code while also tackling advanced typing features such as GADTs that build upon polymorphism. Along the way, we also present an implementation of these techniques in Scythe, a prototype live, type-directed programming tool for the Haskell programming language and reflect on our initial experience with the tool.","PeriodicalId":413151,"journal":{"name":"Proceedings of the 4th ACM SIGPLAN International Workshop on Type-Driven Development","volume":"12 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2019-07-06","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"125737013","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 13
0
×
引用
GB/T 7714-2015
复制
MLA
复制
APA
复制
导出至
BibTeX EndNote RefMan NoteFirst NoteExpress
×
提示
您的信息不完整,为了账户安全,请先补充。
现在去补充
×
提示
您因"违规操作"
具体请查看互助需知
我知道了
×
提示
确定
请完成安全验证×
相关产品
×
本文献相关产品
联系我们:info@booksci.cn Book学术提供免费学术资源搜索服务,方便国内外学者检索中英文文献。致力于提供最便捷和优质的服务体验。 Copyright © 2023 布克学术 All rights reserved.
京ICP备2023020795号-1
ghs 京公网安备 11010802042870号
Book学术文献互助
Book学术文献互助群
群 号:604180095
Book学术官方微信
小红书