跳到主要内容
10.1145/2951913.2951914acm会议文章/章节视图摘要出版物页面icfp公司会议记录会议集合
研究论文
公共访问

Ghostbuster:简化和转换GADT的工具

出版:2016年9月4日出版历史

摘要

广义代数数据类型,或简称GADT,可以对构造函数类型中的非平凡属性进行编码。然而,一旦这些属性被编码到数据类型中,所有操作该数据类型的代码都必须提供证据,证明它维护了这些属性,以便进行类型检查。在本文中,我们向逐步履行这些义务迈出了一步。我们引入了一个工具Ghostbuster,它可以生成GADT的简化版本,其中省略了选定的类型参数,从而削弱了简化数据类型的保证,以换取减少操作它所需的义务。像装饰品一样,这些简化数据类型保留了原始数据类型的递归结构,但与装饰品不同,我们专注于信息存储的双向转换。Ghostbuster在原始数据类型和简化数据类型之间生成类型安全的转换函数,我们证明这些数据类型在组合时是身份函数。我们针对Hackage包数据库中的数千个GADT对Haskell的原型工具进行了评估,生成了更简单的Haskell'98数据类型以及两者之间的往返转换函数。

跳过补充材料部分

补充材料

工具书类

  1. M.Abadi、L.Cardelli、B.Pierce和G.Plotkin。静态类型语言中的动态类型。POPL'98:编程语言原理,第237-268页,1989年。谷歌学者谷歌学者数字图书馆数字图书馆
  2. M.Abadi、L.Cardelli、B.Pierce和D.Rémy。多态语言中的动态类型。函数编程杂志,5:111-1301995。谷歌学者谷歌学者交叉引用交叉引用
  3. T.Altenkirch和B.Reuse。使用广义归纳类型的Lambda术语的单数表示。J.Flum和M.Rodriguez-Artalejo,编辑,《CSL’99:计算机科学逻辑》,第453-468页,1999年。谷歌学者谷歌学者数字图书馆数字图书馆
  4. A.I.Baars和S.D.Swierstra。键入动态键入。ICFP'02:函数编程国际会议,第157-166页,2002年。谷歌学者谷歌学者数字图书馆数字图书馆
  5. E.Brady、C.McBride和J.McKinna。归纳家庭不需要存储他们的指数。在TYPES’03:证明和程序的类型中,第115–129页。斯普林格,2004年。谷歌学者谷歌学者
  6. C.Casinghino、V.Sjöberg和S.Weirich。用独立类型的语言组合证明和程序。《POPL’14:编程语言原理》,第33-45页,2014年。谷歌学者谷歌学者数字图书馆数字图书馆
  7. M.M.T.Chakravarty、G.Keller和S.Peyton Jones。关联的类型同义词。2005年《POPL'05:编程语言原理》,第241-253页。谷歌学者谷歌学者数字图书馆数字图书馆
  8. M.M.T.Chakravarty、G.Keller、S.Lee、T.L.McDonell和V.Grover。使用多核GPU加速Haskell阵列代码。2011年《DAMP’11:多核编程的声明性方面》,第3-14页。谷歌学者谷歌学者数字图书馆数字图书馆
  9. J.Cheney和R.Hinze。一流的幻影类型。技术报告,康奈尔大学,2003年。谷歌学者谷歌学者
  10. P.E.Dagand和C.McBride。在装饰品之间传递功能。《ICFP’12:函数式编程国际会议》,第103–114页,2012年。谷歌学者谷歌学者数字图书馆数字图书馆
  11. C.V.Hall、K.Hammond、S.Peyton Jones和P.L.Wadler。在Haskell中键入类。《TOPLAS’96:编程语言与系统学报》,18(2):109–1381996年3月。谷歌学者谷歌学者数字图书馆数字图书馆
  12. H.-S.Ko和J.Gibbons。关系代数装饰品。在《DTP’13:依赖型编程》中,第37-48页,2013年。谷歌学者谷歌学者数字图书馆数字图书馆
  13. X.Leroy和M.Mauny。《功能编程语言与计算机体系结构》,第406–426页,1991年。谷歌学者谷歌学者数字图书馆数字图书馆
  14. C.麦克布莱德。类型保留重命名和替换。函数编程杂志,2006年。谷歌学者谷歌学者
  15. C.麦克布莱德。装饰代数,代数装饰。《函数编程杂志》即将出版。谷歌学者谷歌学者
  16. T.L.McDonell、M.M.T.Chakravarty、G.Keller和B.Lippmeier。优化纯功能GPU程序。2013年《ICFP’13:函数式编程国际会议》,第49–60页。谷歌学者谷歌学者数字图书馆数字图书馆
  17. T.L.McDonell、M.M.T.Chakravarty、V.Grover和R.R.Newton。类型安全运行时代码生成:加速到LLVM。Haskell研讨会,第201–212页,2015年。谷歌学者谷歌学者数字图书馆数字图书馆
  18. X.Ou、G.Tan、Y.Mandelbaum和D.Walker。具有依赖类型的动态类型(扩展抽象)。在TCS’04:国际理论计算机科学会议,第437-450页,2004年8月。谷歌学者谷歌学者
  19. J.Peterson和M.Jones。实现类型类。《PLDI’93:编程语言设计与实现》,第227-236页,1993年6月。谷歌学者谷歌学者数字图书馆数字图书馆
  20. T.Schrijvers、S.Peyton Jones、M.M.T.Chakravarty和M.Sulzmann。使用开放式函数进行类型检查。在ICFP'08:函数式编程国际会议,第51-62页,2008年。谷歌学者谷歌学者数字图书馆数字图书馆
  21. T.Schrijvers、S.Peyton Jones、M.Sulzmann和D.Vytiniotis。GADT的完整和可判定类型推断。ICFP'09:函数编程国际会议,第341-352页,2009年。谷歌学者谷歌学者数字图书馆数字图书馆
  22. T.Sheard和S.Peyton Jones。Haskell的模板元编程。哈斯克尔研讨会,第1-16页,2002年。谷歌学者谷歌学者数字图书馆数字图书馆
  23. M.Shields、T.Sheard和S.Peyton Jones。动态类型作为阶段类型推理。《POPL'98:编程语言原理》,第289-302页,1998年。谷歌学者谷歌学者数字图书馆数字图书馆
  24. V.Simonet和F.Pottier。保护代数数据类型的基于约束的方法。TOPLAS'07:编程语言与系统学报,29(1):2007年1月。谷歌学者谷歌学者数字图书馆数字图书馆
  25. Z.Somogyi、F.J.Henderson和T.C.Conway。Mercury是一种高效的纯声明性逻辑编程语言。澳大利亚计算机科学通信,17:499–5121995。谷歌学者谷歌学者
  26. D.Syme、K.Battocchi、K.Takeda、D.Malayeri和T.Petricek。互联网规模数据源的信息丰富功能编程主题。《DDFP’13:数据驱动函数编程》,第1-4页,2013年。谷歌学者谷歌学者数字图书馆数字图书馆
  27. D.Vytiniotis、S.Peyton Jones和J.P.Magalhães。等式证明和延迟类型错误:编译珍珠。《ICFP’12:函数编程国际会议》,第341-352页,2012年。谷歌学者谷歌学者数字图书馆数字图书馆
  28. T.Williams、P.-E.Dagand和D.Rémy。装饰在实践中。2014年第15–24页,第14工作组:通用编程研讨会。谷歌学者谷歌学者数字图书馆数字图书馆

索引术语

  1. Ghostbuster:简化和转换GADT的工具

    建议

    评论

    登录选项

    检查您是否可以通过登录凭据或您的机构访问本文。

    登录

    完全访问权限

    • 发布于

      封面图片ACM会议
      ICFP 2016:第21届ACM SIGPLAN功能编程国际会议记录
      2016年9月
      501页
      国际标准图书编号:9781450342193
      内政部:10.1145/2951913
      • 封面图片ACM SIGPLAN注意事项
        ACM SIGPLAN通知 第51卷第9期
        2016年ICFP
        2016年9月
        501页
        国际标准编号:0362-1340
        EISSN公司:1558-1160
        内政部:2014年10月14日/3022670
        期刊目录

      版权所有©2016 ACM

      如果复制品不是为了盈利或商业利益而制作或分发的,并且复制品的第一页载有本通知和完整引文,则允许免费制作本作品的全部或部分数字或硬拷贝以供个人或课堂使用。必须尊重作者以外的其他人对本作品组成部分的版权。允许用信用证进行摘要。要以其他方式复制或重新发布,在服务器上发布或重新发布到列表,需要事先获得特定许可和/或付费。从请求权限[电子邮件保护]

      出版商

      计算机协会

      美国纽约州纽约市

      出版历史

      • 出版:2016年9月4日

      权限

      请求有关此文章的权限。

      请求权限

      检查更新

      限定符

      • 研究论文

      接受率

      总体验收率333属于1,064提交文件,31%

      即将召开的会议

      24年ICFP
      ACM SIGPLAN函数编程国际会议
      2024年9月9日至13日
      米兰,意大利

    PDF格式

    以PDF文件查看或下载。

    PDF格式

    电子阅读器

    使用eReader联机查看。

    电子阅读器