首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >让一种语言同时提供按名称调用和按值调用如何?

让一种语言同时提供按名称调用和按值调用如何?
EN

Stack Overflow用户
提问于 2011-02-27 19:24:18
回答 1查看 165关注 0票数 4

让一种语言同时提供按需调用( call-by-need,CBN)和按值调用( call-by-value,CBV)评估策略可以吗?我的意思是不需要修复它和在另一个中模拟,而是让用户在需要的时候选择哪一个。例如,假设语言有一个eval函数,就像Scheme available中那样,它可以接受来自用户的另一个参数,指定他想要的评估策略。

EN

回答 1

Stack Overflow用户

发布于 2011-02-27 20:14:22

在一种语言实现中结合按需调用(惰性)和按值调用(严格)当然是可能的,只要注意避免使具有副作用的计算变得懒惰并使发散计算变得严格。

Strictness analysis用于惰性函数式语言中,用于检测何时可以使用CBV策略安全地评估函数。CBV求值通常更快,但对非严格函数使用此求值策略会改变程序的语义。

Wadler描述了如何在函数式语言中组合惰性计算和严格计算。

作为终极thread的lambda也解决了这个问题。

Scala有一个关键字lazy,用于说明某些计算将延迟执行。其他语言也有类似的结构。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5133581

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档