首先,我从来没有研究过这些东西,或任何东西,所以我可能会问很无聊的问题,这我很抱歉,请去容易对我:)我如何误解按需求评估?
我玩弄实施演算,并根据需求进行评估。我试图按照this paper关于这个问题,其中有关位似乎是第28页上描述的自然语义。
无论如何,我不明白这个评估策略是,据我了解,实际替代只发生在评估变量时。抽象评估自己,因为这些是值,应用程序只会将新条目添加到缓存中。
但考虑到,究竟是如何一个去评价像
(λx.λy.x y) λa.a
按照自然语义,在链接的论文中描述的术语,第一次评估步骤是进入x -> λa.a
添加到缓存,并在应用程序的lhs上评估抽象的主体,即λy.x y
。但这是一个价值,所以评估结束。在这一点上,我们有一个没有关闭的术语,并且是一个非空的堆。虽然我们确切地知道该术语应评估为λy.(λa.a) y
。
我误解了什么?这在实际使用此评估策略的语言中如何工作?
链接已损坏。我收到“我们很抱歉!网址与我们资源库中的任何资源不匹配。” –
它确实破了,对不起。这是1998年5月由John Maraist,Martin Odersky和Philip Wadler发表的题为“按需调用Lambda微积分”的函数式编程杂志的文章。我可以做的是链接到相关段落的截图:https://www.dropbox.com/s/os7a87s67hy9tpt/Screenshot%202016-08-05%2011.21.04.png?dl=0和https:// www .dropbox.com/s/odgtn6jnme0lqbl /截图%202016-08-05%2011.21.29.png?dl = 0 –
看起来这篇文章可以从P. Wadler的主页上获得:http://homepages.inf.ed。 ac.uk/wadler/papers/need-journal/need-journal.ps –