当前位置:  开发笔记 > 运维 > 正文

什么是SML用于?

如何解决《什么是SML用于?》经验,为你挑选了2个好方法。

SML在真实单词中的用途是什么?

它的实际用途是否类似于Prolog?



1> Ville Laurik..:

在工作中,我们在实际的现实软件产品中使用SML,并将其发送给付费客户.我们使用MLton将我们的SML代码编译为在Windows,Linux,Solaris,AIX和HP-UX上运行的本机代码.它运作良好,我们对我们的选择感到满意.

我不认为SML特别适合任何明确的利基市场.实际上,SML是一种非常全面的通用编程语言.Prolog在逻辑编程/人工智能/基于规则的系统中已经建立了很好的解决方案,但它被用于除了这些传统领域之外的很多东西.

对于正在考虑在"现实世界"中使用SML进行软件项目的任何人来说,以下是我们迄今为止注意到的一些优点和缺点:

SML是一种非常好的通用编程语言,尤其是模块系统

MLton优化得非常好,您可以自由使用抽象而不会失去性能

我们的旧代码是用简单的C编写的.我们可以用SML逐个替换它,将C和SML代码链接到相同的执行程序.

SML/NJ为快速开发提供了一个代表

适用于我们所有平台

缺点:

微不足道的用户群

缺乏支持工具领域(IDE,代码文档,调试器等)

我不得不将MLton自己移植到AIX和HP-UX



2> 小智..:

ML与Prolog无法直接比较.Prolog是一种声明性逻辑编程语言,基本上是使用Horn子句的定理证明器.(非纯Prolog)的一个很好的特性是它允许你在编译或运行时严格修改程序.例如,在大多数现代Prolog实现中,您可以使用DCG(明确的子句语法)形式直接编写语法.使用' - >'运算符的语法规则使用术语扩展重写为Prolog子句.例如:

a(N) --> b, c(N).

将被改写为:

a(N,P0,P2) :- b(P0,P1), c(N,P1,P2).

位置变量的使用强制了箭头右侧的女儿的邻接.由于Prolog将通过证明其女儿(通过回溯)来试图证明一个条款的头部,所以你基本上有一个自上而下的左右解析器而没有任何额外的工作.程序修改的另一个例子是(动态)事实或子句的断言或撤销,它们可用于在运行时修改程序的行为.

另一方面,ML是一种不纯的函数式语言.Prolog和ML之间的联系是一些定理证明用ML编写.我认为ML更具通用性,但对于它的利基Prolog是非常方便的.两者都非常有用,甚至只是为了扩大你的视野.

推荐阅读
php
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有