We establish a general framework for reasoning about the relationship between call-by-value and call-by-name. In languages with computational effects, call-by-value and call-by-name executions of programs often have different, but related, observable behaviours. For example, if a program might diverge but otherwise has no effects, then whenever it terminates under call-by-value, it terminates with the same result under call-by-name. We propose a technique for stating and proving properties like these. The key ingredient is Levy's call-by-push-value calculus, which we use as a framework for reasoning about evaluation orders. We show that the call-by-value and call-by-name translations of expressions into call-by-push-value have related observable behaviour under certain conditions on computational effects, which we identify. We then use this fact to construct maps between the call-by-value and call-by-name interpretations of types, and identify further properties of effects that imply these maps form a Galois connection. These properties hold for some computational effects (such as divergence), but not others (such as mutable state). This gives rise to a general reasoning principle that relates call-by-value and call-by-name. We apply the reasoning principle to example computational effects including divergence and nondeterminism.


翻译:我们建立了一个通用框架,用于推理按值调用与按名调用之间的关系。在具有计算效应的语言中,程序的按值调用和按名调用执行通常会产生不同但相关的可观察行为。例如,如果一个程序可能发散(diverge)但无其他效应,那么当它在按值调用下终止时,在按名调用下也会以相同结果终止。我们提出了一种用于陈述和证明此类性质的技术,其关键要素是Levy的按值推送调用(call-by-push-value)演算,我们将其用作推理求值顺序的框架。我们证明,在满足特定计算效应条件(我们已识别出这些条件)的情况下,按值调用和按名调用表达式到按值推送调用的翻译具有相关的可观察行为。基于此,我们构建了按值调用与按名调用类型解释之间的映射,并进一步识别出使这些映射构成伽罗瓦联系(Galois connection)的效应性质。这些性质对某些计算效应(如发散)成立,但对其他效应(如可变状态)不成立。由此产生了一个关联按值调用与按名调用的通用推理原则。我们将此推理原则应用于包括发散和非确定性在内的示例计算效应。

0
下载
关闭预览

相关内容

专知会员服务
24+阅读 · 2020年9月25日
【ACL2020】多模态信息抽取,365页ppt
专知会员服务
151+阅读 · 2020年7月6日
ExBert — 可视化分析Transformer学到的表示
专知会员服务
32+阅读 · 2019年10月16日
Keras François Chollet 《Deep Learning with Python 》, 386页pdf
专知会员服务
164+阅读 · 2019年10月12日
【SIGGRAPH2019】TensorFlow 2.0深度学习计算机图形学应用
专知会员服务
41+阅读 · 2019年10月9日
学习自然语言处理路线图
专知会员服务
140+阅读 · 2019年9月24日
RL解决'BipedalWalkerHardcore-v2' (SOTA)
CreateAMind
31+阅读 · 2019年7月17日
强化学习的Unsupervised Meta-Learning
CreateAMind
18+阅读 · 2019年1月7日
利用动态深度学习预测金融时间序列基于Python
量化投资与机器学习
18+阅读 · 2018年10月30日
disentangled-representation-papers
CreateAMind
26+阅读 · 2018年9月12日
论文浅尝 | 利用 RNN 和 CNN 构建基于 FreeBase 的问答系统
开放知识图谱
11+阅读 · 2018年4月25日
详述DeepMind wavenet原理及其TensorFlow实现
深度学习每日摘要
12+阅读 · 2017年6月26日
Layer Normalization原理及其TensorFlow实现
深度学习每日摘要
32+阅读 · 2017年6月17日
国家自然科学基金
2+阅读 · 2015年12月31日
国家自然科学基金
0+阅读 · 2015年12月31日
国家自然科学基金
0+阅读 · 2015年12月31日
国家自然科学基金
0+阅读 · 2015年12月31日
国家自然科学基金
4+阅读 · 2015年12月31日
国家自然科学基金
2+阅读 · 2015年12月31日
国家自然科学基金
0+阅读 · 2015年12月31日
国家自然科学基金
0+阅读 · 2014年12月31日
国家自然科学基金
0+阅读 · 2014年12月31日
国家自然科学基金
1+阅读 · 2014年12月31日
Arxiv
0+阅读 · 2024年3月21日
Arxiv
0+阅读 · 2024年3月19日
VIP会员
最新内容
深入Project Maven:为何人工智能在战场上依然失灵
专知会员服务
3+阅读 · 47分钟前
锻造未来士兵:外骨骼、基因工程与赛博格
专知会员服务
0+阅读 · 56分钟前
《无人机蜂群通信技术研究》50页
专知会员服务
4+阅读 · 今天14:55
战力倍增器:自主武器系统与乌克兰及加沙冲突
人工智能赋能战场情报:提速决策进程
专知会员服务
3+阅读 · 7月17日
《拥抱新兴技术:面向未来军官的教育革新》
专知会员服务
7+阅读 · 7月17日
相关资讯
RL解决'BipedalWalkerHardcore-v2' (SOTA)
CreateAMind
31+阅读 · 2019年7月17日
强化学习的Unsupervised Meta-Learning
CreateAMind
18+阅读 · 2019年1月7日
利用动态深度学习预测金融时间序列基于Python
量化投资与机器学习
18+阅读 · 2018年10月30日
disentangled-representation-papers
CreateAMind
26+阅读 · 2018年9月12日
论文浅尝 | 利用 RNN 和 CNN 构建基于 FreeBase 的问答系统
开放知识图谱
11+阅读 · 2018年4月25日
详述DeepMind wavenet原理及其TensorFlow实现
深度学习每日摘要
12+阅读 · 2017年6月26日
Layer Normalization原理及其TensorFlow实现
深度学习每日摘要
32+阅读 · 2017年6月17日
相关基金
国家自然科学基金
2+阅读 · 2015年12月31日
国家自然科学基金
0+阅读 · 2015年12月31日
国家自然科学基金
0+阅读 · 2015年12月31日
国家自然科学基金
0+阅读 · 2015年12月31日
国家自然科学基金
4+阅读 · 2015年12月31日
国家自然科学基金
2+阅读 · 2015年12月31日
国家自然科学基金
0+阅读 · 2015年12月31日
国家自然科学基金
0+阅读 · 2014年12月31日
国家自然科学基金
0+阅读 · 2014年12月31日
国家自然科学基金
1+阅读 · 2014年12月31日
Top
微信扫码咨询专知VIP会员