We propose a novel approach to soundly combining linear types with effect handlers. Linear type systems statically ensure that resources such as file handles are used exactly once. Effect handlers provide a modular programming abstraction for implementing features ranging from exceptions to concurrency. Whereas linear type systems bake in the assumption that continuations are invoked exactly once, effect handlers allow continuations to be discarded or invoked more than once. This mismatch leads to soundness bugs in existing systems such as the programming language Links, which combines linearity (for session types) with effect handlers. We introduce control flow linearity as a means to ensure that continuations are used in accordance with the linearity of any resources they capture, ruling out such soundness bugs. We formalise control flow linearity in a System F-style core calculus Feffpop equipped with linear types, effect types, and effect handlers. We define a linearity-aware semantics to formally prove that Feffpop preserves the integrity of linear values in the sense that no linear value is discarded or duplicated. In order to show that control flow linearity can be made practical, we adapt Links based on the design of Feffpop, in doing so fixing a long-standing soundness bug. Finally, to better expose the potential of control flow linearity, we define an ML-style core calculus Qeffpop, based on qualified types, which requires no programmer provided annotations, and instead relies entirely on type inference to infer control flow linearity. Both linearity and effects are captured by qualified types. Qeffpop overcomes a number of practical limitations of Feffpop, supporting abstraction over linearity, linearity dependencies between type variables, and a much more fine-grained notion of control flow linearity.


翻译:我们提出了一种新颖的方法,用于稳健地将线性类型与效应处理器相结合。线性类型系统静态地确保文件句柄等资源仅被使用一次。效应处理器提供了一种模块化的编程抽象,用于实现从异常到并发等各种功能。然而,线性类型系统假设续体只被调用一次,而效应处理器允许续体被丢弃或多次调用。这种不匹配会导致现有系统(如编程语言Links)中出现健全性缺陷,该语言将线性(用于会话类型)与效应处理器结合。我们引入了控制流线性,以确保续体的使用符合它们所捕获资源的线性性,从而消除这类健全性缺陷。我们在System F风格的核心演算Feffpop中形式化了控制流线性,该演算配备了线性类型、效应类型和效应处理器。我们定义了一种线性感知语义,以正式证明Feffpop在线性值的完整性意义下保持其不被丢弃或复制。为了展示控制流线性在实际中的应用,我们基于Feffpop的设计改进了Links,从而修复了一个长期存在的健全性缺陷。最后,为了更好地展现控制流线性的潜力,我们定义了一个基于限定类型的ML风格核心演算Qeffpop,该演算无需程序员提供注解,完全依赖类型推断来推导控制流线性。线性性和效应都被捕获在限定类型中。Qeffpop克服了Feffpop的一些实际限制,支持对线性性的抽象、类型变量之间的线性依赖关系,以及更细粒度的控制流线性概念。

0
下载
关闭预览

相关内容

Linux导论,Introduction to Linux,96页ppt
专知会员服务
82+阅读 · 2020年7月26日
【ACL2020】多模态信息抽取,365页ppt
专知会员服务
151+阅读 · 2020年7月6日
FlowQA: Grasping Flow in History for Conversational Machine Comprehension
专知会员服务
34+阅读 · 2019年10月18日
Stabilizing Transformers for Reinforcement Learning
专知会员服务
60+阅读 · 2019年10月17日
《DeepGCNs: Making GCNs Go as Deep as CNNs》
专知会员服务
32+阅读 · 2019年10月17日
Keras François Chollet 《Deep Learning with Python 》, 386页pdf
专知会员服务
164+阅读 · 2019年10月12日
【SIGGRAPH2019】TensorFlow 2.0深度学习计算机图形学应用
专知会员服务
41+阅读 · 2019年10月9日
Hierarchically Structured Meta-learning
CreateAMind
27+阅读 · 2019年5月22日
Transferring Knowledge across Learning Processes
CreateAMind
29+阅读 · 2019年5月18日
强化学习的Unsupervised Meta-Learning
CreateAMind
18+阅读 · 2019年1月7日
Unsupervised Learning via Meta-Learning
CreateAMind
44+阅读 · 2019年1月3日
A Technical Overview of AI & ML in 2018 & Trends for 2019
待字闺中
18+阅读 · 2018年12月24日
disentangled-representation-papers
CreateAMind
26+阅读 · 2018年9月12日
STRCF for Visual Object Tracking
统计学习与视觉计算组
15+阅读 · 2018年5月29日
Hierarchical Imitation - Reinforcement Learning
CreateAMind
19+阅读 · 2018年5月25日
Focal Loss for Dense Object Detection
统计学习与视觉计算组
12+阅读 · 2018年3月15日
IJCAI | Cascade Dynamics Modeling with Attention-based RNN
KingsGarden
13+阅读 · 2017年7月16日
国家自然科学基金
13+阅读 · 2017年12月31日
国家自然科学基金
1+阅读 · 2015年12月31日
国家自然科学基金
47+阅读 · 2015年12月31日
国家自然科学基金
2+阅读 · 2015年12月31日
国家自然科学基金
2+阅读 · 2015年12月31日
国家自然科学基金
0+阅读 · 2014年12月31日
国家自然科学基金
0+阅读 · 2014年12月31日
国家自然科学基金
0+阅读 · 2014年12月31日
国家自然科学基金
2+阅读 · 2014年12月31日
国家自然科学基金
0+阅读 · 2014年12月31日
Arxiv
0+阅读 · 2023年9月7日
Arxiv
0+阅读 · 2023年9月7日
Arxiv
0+阅读 · 2023年9月6日
Arxiv
0+阅读 · 2023年9月6日
Arxiv
0+阅读 · 2023年9月6日
Arxiv
12+阅读 · 2023年5月22日
Arxiv
29+阅读 · 2023年1月12日
Arxiv
15+阅读 · 2022年5月14日
Arxiv
12+阅读 · 2020年12月10日
Arxiv
12+阅读 · 2019年2月26日
VIP会员
最新内容
ICML 2026|ECA:面向开放式图文生成的高效持续对齐
俄乌战场地面机器人如何改写战争规则
专知会员服务
1+阅读 · 今天13:58
《无人水面艇文献综述与结构设计》135页
专知会员服务
10+阅读 · 6月13日
乌克兰战场背后的新武器
专知会员服务
7+阅读 · 6月12日
基于博弈论的陆军人机协同(长文报告)
专知会员服务
13+阅读 · 6月12日
相关VIP内容
Linux导论,Introduction to Linux,96页ppt
专知会员服务
82+阅读 · 2020年7月26日
【ACL2020】多模态信息抽取,365页ppt
专知会员服务
151+阅读 · 2020年7月6日
FlowQA: Grasping Flow in History for Conversational Machine Comprehension
专知会员服务
34+阅读 · 2019年10月18日
Stabilizing Transformers for Reinforcement Learning
专知会员服务
60+阅读 · 2019年10月17日
《DeepGCNs: Making GCNs Go as Deep as CNNs》
专知会员服务
32+阅读 · 2019年10月17日
Keras François Chollet 《Deep Learning with Python 》, 386页pdf
专知会员服务
164+阅读 · 2019年10月12日
【SIGGRAPH2019】TensorFlow 2.0深度学习计算机图形学应用
专知会员服务
41+阅读 · 2019年10月9日
相关资讯
Hierarchically Structured Meta-learning
CreateAMind
27+阅读 · 2019年5月22日
Transferring Knowledge across Learning Processes
CreateAMind
29+阅读 · 2019年5月18日
强化学习的Unsupervised Meta-Learning
CreateAMind
18+阅读 · 2019年1月7日
Unsupervised Learning via Meta-Learning
CreateAMind
44+阅读 · 2019年1月3日
A Technical Overview of AI & ML in 2018 & Trends for 2019
待字闺中
18+阅读 · 2018年12月24日
disentangled-representation-papers
CreateAMind
26+阅读 · 2018年9月12日
STRCF for Visual Object Tracking
统计学习与视觉计算组
15+阅读 · 2018年5月29日
Hierarchical Imitation - Reinforcement Learning
CreateAMind
19+阅读 · 2018年5月25日
Focal Loss for Dense Object Detection
统计学习与视觉计算组
12+阅读 · 2018年3月15日
IJCAI | Cascade Dynamics Modeling with Attention-based RNN
KingsGarden
13+阅读 · 2017年7月16日
相关论文
Arxiv
0+阅读 · 2023年9月7日
Arxiv
0+阅读 · 2023年9月7日
Arxiv
0+阅读 · 2023年9月6日
Arxiv
0+阅读 · 2023年9月6日
Arxiv
0+阅读 · 2023年9月6日
Arxiv
12+阅读 · 2023年5月22日
Arxiv
29+阅读 · 2023年1月12日
Arxiv
15+阅读 · 2022年5月14日
Arxiv
12+阅读 · 2020年12月10日
Arxiv
12+阅读 · 2019年2月26日
相关基金
国家自然科学基金
13+阅读 · 2017年12月31日
国家自然科学基金
1+阅读 · 2015年12月31日
国家自然科学基金
47+阅读 · 2015年12月31日
国家自然科学基金
2+阅读 · 2015年12月31日
国家自然科学基金
2+阅读 · 2015年12月31日
国家自然科学基金
0+阅读 · 2014年12月31日
国家自然科学基金
0+阅读 · 2014年12月31日
国家自然科学基金
0+阅读 · 2014年12月31日
国家自然科学基金
2+阅读 · 2014年12月31日
国家自然科学基金
0+阅读 · 2014年12月31日
Top
微信扫码咨询专知VIP会员