真实单词中SML的用途是什么?
它的实际用途是否类似于Prolog?
答案 0 :(得分:25)
在工作中,我们在实际的现实软件产品中使用SML,并将其发送给付费客户。我们使用MLton将我们的SML代码编译为在Windows,Linux,Solaris,AIX和HP-UX上运行的本机代码。它运作良好,我们对我们的选择感到满意。
我不认为SML特别适合任何明确的利基市场。实际上,SML是一种非常全面的通用编程语言。 Prolog在逻辑编程/人工智能/基于规则的系统中已经建立了很好的解决方案,但it's used for a lot of things除了这些传统领域之外。
对于那些考虑在“现实世界”中使用SML进行软件项目的人来说,以下是我们迄今为止注意到的一些优点和缺点:
缺点:
答案 1 :(得分:6)
ML与Prolog无法直接比较。 Prolog是一种声明性逻辑编程语言,基本上是使用Horn子句的定理证明器。 (非纯Prolog)的一个很好的特性是它允许你在编译或运行时严格修改程序。例如,在大多数现代Prolog实现中,您可以使用DCG(明确的子句语法)形式直接编写语法。使用' - >'的语法规则运算符使用术语扩展重写为Prolog子句。 E.g:
a(N) --> b, c(N).
将被改写为:
a(N,P0,P2) :- b(P0,P1), c(N,P1,P2).
位置变量的使用强制了箭头右侧的女儿的邻接。由于Prolog将通过证明其女儿(通过回溯)来试图证明一个条款的头部,所以你基本上有一个自上而下的左右解析器而没有任何额外的工作。程序修改的另一个例子是(动态)事实或子句的断言或撤销,可用于在运行时修改程序的行为。
另一方面,ML是一种不纯的函数式语言。 Prolog和ML之间的联系是一些定理证明用ML编写。我认为ML更具通用性,但对于它的利基Prolog是非常方便的。两者都非常有用,即使只是为了扩大你的视野。答案 2 :(得分:2)
编译器编写者使用SML。 Prolog和SML都用于定理证明。
答案 3 :(得分:2)
Carnegie Mellon Univ的FoxNet project是使用SML构建的。
Jane Street自营贸易公司,将O'Caml用于他们自己的内部构建软件。
工作程序员ML的作者Laurance C. Paulson使用SML构建了一个LCF定理证明者Isabell。
教授和Haskell专家Philip Wadler维护了一个使用功能编程的现实世界项目列表,其中包括使用ML的项目,位于 http://homepages.inf.ed.ac.uk/wadler/realworld/答案 4 :(得分:1)
我只是亲自在大学里用它来进行数论理论课程。 我不得不说我非常喜欢使用它。它可以处理大量数据,这在处理密码术时很不错。
如果重要我正在使用莫斯科ML http://www.itu.dk/people/sestoft/mosml.html
答案 5 :(得分:1)
我还没有看到很多ML的商业应用,但这可能取决于可用的环境,而不是对语言的反思。我见过许多银行使用F#(与ML是同一个系列)来处理数据流,做矩阵代数并寻找模式。微软已经为.NET打包它的事实显然无济于事。
答案 6 :(得分:1)
不是SML,而是密切相关的是OCAML,它已被用于许多方面:
http://caml.inria.fr/about/successes.en.html
我更喜欢“西方更快的傅立叶变换”,其中ML用于生成优化的C ...