首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >函数式程序设计:等价性与价值评估

函数式程序设计:等价性与价值评估
EN

Stack Overflow用户
提问于 2015-08-14 15:21:54
回答 2查看 212关注 0票数 1

我正在读一些关于SML的注释,我对作者的一个评论感到有点困惑。让e ==> v表示值的计算,e ~ e'表示e在扩展上等价于e'

作者写道:

如果是e ~ e' (都是t类型),并且存在一个t s.t类型的SML值ve ~ v,则有一个SML值v' (同样是t类型),s.t。e' ==> v'v ~ v'. 确保您注意到了这一点(并且理解为什么我们这里没有这样说,如果e ~ e'e ~ v那么e' ==> v

为什么不行?

EN

回答 2

Stack Overflow用户

发布于 2016-11-04 08:27:55

因为这意味着两者的句法值是相同的。但外延平等与句法平等并不相同。粗略地说,这意味着程序无法区分这些值。

特别要注意的是,函数表达式本身就是值。但是,不同体的不同函数值在广义上仍然是相等的,因为它们对相同的参数计算相同的结果。微不足道的例子:

代码语言:javascript
复制
fun x => x

代码语言:javascript
复制
fun x => let y = x in y

是两个在语法上不同但在广义上相等的值。

票数 2
EN

Stack Overflow用户

发布于 2016-11-04 04:52:23

如果以ee'作为vv'的值开始,那么第二个语句会说

如果v ~ v‘和v ~ v,那么v' ==> v

可以简化为

如果v ~ v',那么v' ==> v

这与扩展性正好相反,因为你可以有。

代码语言:javascript
复制
v = fn x => x + 0
v' = fn x => x

它们不是相同的值,但在广义上是相等的。

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

https://stackoverflow.com/questions/32013471

复制
相关文章

相似问题

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