首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >withtype对mlton失败,对smlnj成功

withtype对mlton失败,对smlnj成功
EN

Stack Overflow用户
提问于 2012-10-21 19:11:25
回答 1查看 464关注 0票数 0

在编写应用程序时,我希望在数据类型声明的withtype子句中定义多个类型。下面的代码片段演示了它:

代码语言:javascript
复制
datatype ta = A
withtype tb = int
     and tc = tb

mlton无法编译此代码,尽管smlnj成功了。

代码语言:javascript
复制
$ mlton -stop o test.sml
Error: test.sml 3.15.
  Undefined type tb.
compilation aborted: parseAndElaborate reported errors

我用的是mlton-20100608和smlnj 110.71。

这是在mlton的窃听器吗?

我不知道如何在没有这类声明的情况下继续:一组相互递归的数据类型和类型。

这个想法来自安德鲁·阿佩尔在他的书“http://www.cs.princeton.edu/~appel/modern/ml/,第98页,文件absyn.sml”中为老虎语言提出的抽象语法树类型。

EN

回答 1

Stack Overflow用户

发布于 2012-10-23 11:56:18

据mlton社区的Andreas说,这不是带有mlton的bug,而是SML/NJ方面(已知的)偏离标准。根据规范,withtype后面的缩写类型是,而不是彼此之间的递归,只有前面的数据类型。该示例被重写为

代码语言:javascript
复制
datatype ta = A
type tb = int
and tc = tb

也就是说,MLton标记这一点是正确的。

一个可以在右边扩展另一个类型的构造函数,所以这不是真正的限制。但是,必须这样做可能会带来很大的麻烦。

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

https://stackoverflow.com/questions/13001197

复制
相关文章

相似问题

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