GHC中的类型错误定制:通过类型级编程控制表达式级类型错误

A. Serrano, Jurriaan Hage
{"title":"GHC中的类型错误定制:通过类型级编程控制表达式级类型错误","authors":"A. Serrano, Jurriaan Hage","doi":"10.1145/3205368.3205370","DOIUrl":null,"url":null,"abstract":"Embedded domain specific languages (DSLs) are a common pattern in the functional programming world, providing very high-level abstractions to programmer. Unfortunately, this abstraction is broken when type errors occur, leaking details of the DSL implementation. In this paper we present a set of techniques for customizing type error diagnosis in order to avoid this leaking. These techniques have been implemented in the GHC Haskell compiler. Our customizations are declared in the type signatures of functions provided by the DSL, leading to type error message that are context-dependent: the same kind of error can be reported in a different way depending on the particular expression in which it occurs. We make use of the ability to manipulate constraints using type-level programming which is already present in GHC, and which enables reuse and abstraction of common type error patterns.","PeriodicalId":180839,"journal":{"name":"Proceedings of the 29th Symposium on the Implementation and Application of Functional Programming Languages","volume":"11 1","pages":"0"},"PeriodicalIF":0.0000,"publicationDate":"2017-08-30","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":"8","resultStr":"{\"title\":\"Type Error Customization in GHC: Controlling expression-level type errors by type-level programming\",\"authors\":\"A. Serrano, Jurriaan Hage\",\"doi\":\"10.1145/3205368.3205370\",\"DOIUrl\":null,\"url\":null,\"abstract\":\"Embedded domain specific languages (DSLs) are a common pattern in the functional programming world, providing very high-level abstractions to programmer. Unfortunately, this abstraction is broken when type errors occur, leaking details of the DSL implementation. In this paper we present a set of techniques for customizing type error diagnosis in order to avoid this leaking. These techniques have been implemented in the GHC Haskell compiler. Our customizations are declared in the type signatures of functions provided by the DSL, leading to type error message that are context-dependent: the same kind of error can be reported in a different way depending on the particular expression in which it occurs. We make use of the ability to manipulate constraints using type-level programming which is already present in GHC, and which enables reuse and abstraction of common type error patterns.\",\"PeriodicalId\":180839,\"journal\":{\"name\":\"Proceedings of the 29th Symposium on the Implementation and Application of Functional Programming Languages\",\"volume\":\"11 1\",\"pages\":\"0\"},\"PeriodicalIF\":0.0000,\"publicationDate\":\"2017-08-30\",\"publicationTypes\":\"Journal Article\",\"fieldsOfStudy\":null,\"isOpenAccess\":false,\"openAccessPdf\":\"\",\"citationCount\":\"8\",\"resultStr\":null,\"platform\":\"Semanticscholar\",\"paperid\":null,\"PeriodicalName\":\"Proceedings of the 29th Symposium on the Implementation and Application of Functional Programming Languages\",\"FirstCategoryId\":\"1085\",\"ListUrlMain\":\"https://doi.org/10.1145/3205368.3205370\",\"RegionNum\":0,\"RegionCategory\":null,\"ArticlePicture\":[],\"TitleCN\":null,\"AbstractTextCN\":null,\"PMCID\":null,\"EPubDate\":\"\",\"PubModel\":\"\",\"JCR\":\"\",\"JCRName\":\"\",\"Score\":null,\"Total\":0}","platform":"Semanticscholar","paperid":null,"PeriodicalName":"Proceedings of the 29th Symposium on the Implementation and Application of Functional Programming Languages","FirstCategoryId":"1085","ListUrlMain":"https://doi.org/10.1145/3205368.3205370","RegionNum":0,"RegionCategory":null,"ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":null,"EPubDate":"","PubModel":"","JCR":"","JCRName":"","Score":null,"Total":0}
引用次数: 8

摘要

嵌入式领域特定语言(dsl)是函数式编程世界中的一种常见模式,为程序员提供了非常高级的抽象。不幸的是,当发生类型错误时,这种抽象就会被破坏,从而泄露DSL实现的细节。在本文中,我们提出了一套自定义类型错误诊断的技术,以避免这种泄漏。这些技术已经在GHC Haskell编译器中实现了。我们的自定义是在DSL提供的函数的类型签名中声明的,这会导致与上下文相关的类型错误消息:相同类型的错误可以根据其发生的特定表达式以不同的方式报告。我们利用了GHC中已经存在的类型级编程来操纵约束的能力,它支持对常见类型错误模式的重用和抽象。
本文章由计算机程序翻译,如有差异,请以英文原文为准。
Type Error Customization in GHC: Controlling expression-level type errors by type-level programming
Embedded domain specific languages (DSLs) are a common pattern in the functional programming world, providing very high-level abstractions to programmer. Unfortunately, this abstraction is broken when type errors occur, leaking details of the DSL implementation. In this paper we present a set of techniques for customizing type error diagnosis in order to avoid this leaking. These techniques have been implemented in the GHC Haskell compiler. Our customizations are declared in the type signatures of functions provided by the DSL, leading to type error message that are context-dependent: the same kind of error can be reported in a different way depending on the particular expression in which it occurs. We make use of the ability to manipulate constraints using type-level programming which is already present in GHC, and which enables reuse and abstraction of common type error patterns.
求助全文
通过发布文献求助,成功后即可免费获取论文全文。 去求助
来源期刊
自引率
0.00%
发文量
0
×
引用
GB/T 7714-2015
复制
MLA
复制
APA
复制
导出至
BibTeX EndNote RefMan NoteFirst NoteExpress
×
提示
您的信息不完整,为了账户安全,请先补充。
现在去补充
×
提示
您因"违规操作"
具体请查看互助需知
我知道了
×
提示
确定
请完成安全验证×
copy
已复制链接
快去分享给好友吧!
我知道了
右上角分享
点击右上角分享
0
联系我们:info@booksci.cn Book学术提供免费学术资源搜索服务,方便国内外学者检索中英文文献。致力于提供最便捷和优质的服务体验。 Copyright © 2023 布克学术 All rights reserved.
京ICP备2023020795号-1
ghs 京公网安备 11010802042870号
Book学术文献互助
Book学术文献互助群
群 号:481959085
Book学术官方微信