SML在实际应用中有哪些用途?
它的实际用途是否与Prolog类似?
在工作中,我们把SML用于实际的软件产品,并将其交付给付费客户。我们使用MLton将SML代码编译成原生代码,可以在Windows、Linux、Solaris、AIX和HP-UX上运行。它表现良好,我们对选择很满意。
我认为SML没有特别适合的明确领域。事实上,SML是一种非常全面的通用编程语言。Prolog在逻辑编程/人工智能/基于规则系统解决方案的领域已经很成熟了,但除了这些传统领域外还被用于许多其他领域。
对于任何考虑在“现实世界”中使用SML进行软件项目的人,以下是我们到目前为止注意到的一些优缺点:
缺点:
机器学习(ML)与Prolog不是直接可比较的。Prolog是一种声明性逻辑编程语言,基本上是使用Horn子句的定理证明器。非纯Prolog的一个好特点是它允许您在编译或运行时严重修改程序。例如,在大多数现代Prolog实现中,您可以直接使用DCG(确定性子句语法)形式编写语法。使用“-->”运算符的语法规则将使用术语扩展重写为Prolog子句。例如:
a(N) --> b, c(N).
会被重写为:
a(N,P0,P2) :- b(P0,P1), c(N,P1,P2).
SML被编译器编写者使用。Prolog和SML都被用于定理证明器。
FoxNet项目是卡内基梅隆大学使用SML构建的。
Jane Street专有交易公司使用O'Caml构建他们自己的内部软件。
《ML for the Working Programmer》的作者Laurance C. Paulson使用SML构建了LCF定理证明器Isabell。
Haskell专家和教授Philip Wadler维护着一个使用函数式编程的真实项目列表,其中包括使用ML的项目,位于http://homepages.inf.ed.ac.uk/wadler/realworld/
我个人只在大学的数论课程中使用过它。
我必须说我非常喜欢使用它。当处理密码学时,它可以处理巨大的数字,这非常好。
如果有关系的话,我是使用莫斯科ML http://www.itu.dk/people/sestoft/mosml.html。
虽然不是SML,但与之密切相关的是OCAML,它已被用于许多事情:
http://caml.inria.fr/about/successes.en.html
我相当喜欢“西方的快速傅里叶变换”,其中使用机器学习来生成优化的C代码...