题
什么设置的两毫升的方言分开?
解决方案
有许多差异,一些技术,一些社会政治.我试着把更多的重要的差异第一次。
SML是一种语言的定义和标准。它是稳定的(实际上已被冻结,使它无法演变).目标加枫是一个实现通过一个控制小组在什么样的.它继续发展。(海事组织演变为管理很好。)
SML有许多的实现;加枫只有一个。
目标加枫有一些额外的功能,其中最突出的可能对象以及多形态的变体。
两个语言都有显着不同型号的记录类型。简单地说,在加枫,姓名的记录领域的必须是独一无二的,在SML,两个不同的记录类型在同一范围内可能具有域名的共同点。这个怪癖可以使移植从SML到加枫有点棘手。
有好几句法上的差异。
库和标准职能明显不同。在加枫库是非常必要的,而SML标准的基础上图书馆是一个更能发挥职能的机构。例如,功能的组合是一个顶级的原始在SML;这不是部分的加枫图书馆。在加枫串的图书馆不能提供一倍功能(至少不作为的版本3.08).实现的许多加枫
List
功能是不安全的很长名单;他们的打击。这类系统的微妙的不同:在加枫,一种注释上的一种表达
e : ty
是接受如果类型ty
统一 的类型e
.在SML,e : ty
被接受的,如果只的类型ty
是一个 实例 的类型e
.这种区分渲染的注释中加枫多少用处,在实践中,因为这是不可能使用一种注释,坚持认为,一个表达多态的。加枫有一个更理智和理智的关系之间的接口(所谓 模块的类型 或 签名)和(具体的)的实现(称为 模块 或 结构 于)SML。在SML很多东西去,你必须依靠的程序员建立良好的公约。在加枫,良好的公约是建立和执行通过的编译器。
在SML、算术运营商是超载以适用于这两个浮点和整数的数据。在加枫,运营商不过载;浮点运算符称与一个额外点。
在SML,编程员可以控制的优先顺序和associtivity的缀操作员。在加枫,这些都是确定的第一个字符的操作者的名称。这种限制的限制的好处能够确定自己的缀符号。
为了更详细的分析完整的编辑上的评论,您也可以看看 亚当Chlipala的比较页.
其他提示
有关的句法的差异,诺曼*拉姆齐所提到的,这里有几个网页:
- 比较目的加枫和标准毫升:有很好解释的差异,和"实际"与"纯粹的"图标是太有趣的
- 标准毫升和客观的加枫边
OCaml的增加面向对象的特征,并且具有一些小的语法差异。