首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在标准ML中结构共享是如何破坏的?

在标准ML中结构共享是如何破坏的?
EN

Stack Overflow用户
提问于 2015-03-06 13:54:03
回答 2查看 520关注 0票数 6

在2013年的标准ML的未来展望中,鲍勃·哈珀( Bob )在幻灯片9中说,“结构共享被破坏了”。有人能给出更多的细节吗?我在分享方面没有足够的经验来理解他的意思。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-03-13 18:36:19

由于指定,它不能应用于具有透明类型组件的结构。例如:

代码语言:javascript
复制
signature S = sig type t; type u = int end
signature T =
sig
  structure A : S
  structure B : S
  sharing A = B
end

已经是非法的了,尽管你很自然地希望这是可以的。

这里的历史是在SML'90中引入了结构共享,其中不存在透明的类型组件。在SML'97中,添加了这些。此时,具有共享约束的整个业务变得有些过时,因为它们(在某种程度上)被"where类型“约束所取代。因此,共享的语义得到了极大的简化,结构共享也从原始的语法糖降为语法糖。但是,这种糖的定义只适用于SML'90程序--如果您只将其视为向后兼容性攻击,而不考虑SML'97的核心功能,则这是有意义的。

SML社区中的人对于共享约束的相关性存在分歧。有些人认为他们过时了,有些人仍然很重要。不幸的是,SML'97未能添加一个"where structure“约束,该约束可能已经正确地取代了结构控制。

票数 7
EN

Stack Overflow用户

发布于 2015-03-14 14:53:53

安德烈亚斯·罗斯伯格的回答已经澄清了一些问题,但在安德烈亚斯回答之前,我已经写信给哈珀教授。我在这里给好奇的人发了他的回复:

这个定义纯粹是一个技术性的问题。在SML 90中,除了组成类型共享之外,还有一个结构共享的概念。在SML 97中,结构共享被重新定义为组件类型的共享,但是公式不正确(有几个候选替换,因此编译器的行为不同)。这是一个黑暗的角落,所以在计划的事情,它是非常小的,但错误和相关的不兼容使它不再有用。

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

https://stackoverflow.com/questions/28900279

复制
相关文章

相似问题

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