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

Programming languages 让一种语言同时提供名称调用和值调用如何?,programming-languages,Programming Languages,让一种语言同时提供按需调用(CBN)和按值调用(CBV)评估策略可以吗?我的意思是,不需要修复它,也不需要彼此模拟,而是让用户在需要时选择。例如,让该语言具有一个可用方案中的eval函数,该函数可以接受用户的另一个参数,指定他想要的评估策略。在一种语言实现中结合按需调用(惰性)和按值调用(严格性)当然是可能的,只要一个人注意避免使计算产生副作用,懒惰和使计算发散严格 在惰性(CBN)函数语言中使用,以检测何时可以使用CBV策略安全地评估函数。CBV评估通常更快,但对非严格函数使用此评估策略会改变

让一种语言同时提供按需调用(CBN)和按值调用(CBV)评估策略可以吗?我的意思是,不需要修复它,也不需要彼此模拟,而是让用户在需要时选择。例如,让该语言具有一个可用方案中的
eval
函数,该函数可以接受用户的另一个参数,指定他想要的评估策略。

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

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

描述如何在函数式语言中结合惰性计算和严格计算

lambda终极版也解决了这个问题


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

虽然我已经给出了答案,但我认为如果迁移到stackoverflow,这个问题可能会得到更多的答案。你觉得今天怎么样?谢谢,戴夫。这是个好主意。不幸的是,它没有带来任何进一步的结果。