【发布时间】:2016-11-04 16:27:55
【问题描述】:
我正在阅读一些关于 SML 的笔记,对作者的其中一个评论感到有些困惑。让e ==> v 表示对一个值的评估,e ~ e'
表示e 扩展等价于e'
作者写道:
如果
e ~ e'(均为t类型)并且存在v类型为t的SML 值。e ~ v,然后有一个 SML 值v'(同样是t类型),s.t.e' ==> v'和v ~ v'。确保您注意到这一点(并理解我们为什么不在这里说如果
e ~ e'和e ~ v然后e' ==> v。
为什么不呢?
【问题讨论】:
-
鉴于
==>的定义方式,您对fn x => 0与fn x => (0 + 0)有何看法? -
@gallais 我想说他们总是评估相同的值,所以他们在扩展上是等价的
-
SML 在 lambda 抽象下会减少吗?如果我没记错的话,这两个函数已经是 values 并且它们不再减少了。但它们确实是等价的,因为它们在外延上是相等的。
标签: functional-programming sml