单子计算的评估策略

摘要:单子已经成为在函数式编程中构建有副作用的计算的强大工具,因为它们使得效果的顺序显式。当将纯代码转换为单子版本时,我们需要显式地指定求值顺序。两种标准的转换方式给出了按值调用和按名调用的语义。得到的程序具有不同的结构和类型,这使得重新选择变得困难。 在本文中,我们使用额外的操作malias将纯代码转换为单子代码,该操作抽象出了求值策略。malias操作基于计算共同子代;我们使用范畴论框架来指定对操作应当满足的法则。 对于任何单子,我们展示了可以给出按值调用和按名调用语义的malias实现。虽然我们没有为所有单子给出名字需求语义,但我们展示了如何将某些单子转换为具有名字需求语义的扩展单子,这在一定程度上回答了一个悬而未决的问题。此外,使用我们统一的转换,可以在不改变结构或类型的情况下更改被转换为单子形式的函数代码的求值策略。

作者:Tomas Petricek (University of Cambridge)

论文ID:1202.2921

分类:Programming Languages

分类简称:cs.PL

提交时间:2012-02-15

PDF 下载: 英文版 中文版pdf翻译中