ML

来自开放百科 - 灰狐
(版本间的差异)
跳转到: 导航, 搜索
(以“{{SeeWikipedia|ML (programming language)}} ML编程语言 ==简介== ML是一个通用的函数式编程语言,它是由爱丁堡大学的Robin Milner及他人...”为内容创建页面)
 
(项目)
(未显示1个用户的28个中间版本)
第1行: 第1行:
 
{{SeeWikipedia|ML (programming language)}}
 
{{SeeWikipedia|ML (programming language)}}
  
ML编程语言
+
ML 编程语言
  
 
==简介==
 
==简介==
ML是一个通用的函数式编程语言,它是由爱丁堡大学的Robin Milner及他人在二十世纪七十年代晚期开发的。它的语法是从ISWIM得到的灵感。作为元语言的ML是为了帮助在LCF定理证明机中寻找证明策略而构想出来的。(之前的元语言是pplambda,它联合了一阶逻辑演算和有类型的多态的λ演算)。它使用了Hindley-Milner类型推论算法来推测大多数值的类型,而不需要四处使用注解。
+
ML 是一个通用的函数式编程语言,它是由爱丁堡大学的 Robin Milner 及他人在二十世纪七十年代晚期开发的。它的语法是从 ISWIM 得到的灵感。作为元语言的ML是为了帮助在 LCF 定理证明机中寻找证明策略而构想出来的。(之前的元语言是 pplambda,它联合了一阶逻辑演算和有类型的多态的λ演算)。它使用了 Hindley-Milner 类型推论算法来推测大多数值的类型,而不需要四处使用注解。
  
 +
*[https://docs.huihoo.com/ml/smlfamily/history/index.html History of Standard ML]
 +
*[https://docs.huihoo.com/ml/smlfamily/history/ML2015-talk.pdf The History of Standard ML: Ideas, Principles, Culture] [https://docs.huihoo.com/ml/smlfamily/history/SML-history.pdf The History of Standard ML]
 +
 +
==功能==
 
ML一般被归为非纯函数式编程语言,因为它允许副作用和指令式编程。这一点和纯函数式编程语言,例如[[Haskell]]很不一样。
 
ML一般被归为非纯函数式编程语言,因为它允许副作用和指令式编程。这一点和纯函数式编程语言,例如[[Haskell]]很不一样。
  
第15行: 第19行:
  
 
ML的实力大多被用于语言设计和操作(编译器、分析器、定理证明机),但是它作为通用语言也被用于生化,金融系统,和宗谱数据库,一个P2P的客户/服务器程序等等。
 
ML的实力大多被用于语言设计和操作(编译器、分析器、定理证明机),但是它作为通用语言也被用于生化,金融系统,和宗谱数据库,一个P2P的客户/服务器程序等等。
 +
 +
==标准==
 +
*[https://github.com/SMLFamily/Successor-ML Successor ML] 是用来描述ML语言的下一个版本的术语
 +
*[https://github.com/SMLFamily/The-Definition-of-Standard-ML-Revised SML97]
 +
*[https://github.com/SMLFamily/The-Definition-of-Standard-ML SML90]
 +
*[http://flint.cs.yale.edu/flint/publications/ml2000.html ML2000]
 +
 +
==指南==
 +
[https://docs.huihoo.com/ml/programming-in-sml97-an-on-line-tutorial/ Programming in Standard ML '97: An On-line Tutorial]
 +
 +
很多 SML 实现提供交互式REPL,比如 [[SML/NJ]]
 +
 +
Debian
 +
$ sudo apt install smlnj
 +
$ sml
 +
Standard ML of New Jersey v110.79 [built: Tue Aug  8 16:57:33 2017]
 +
- 1 + 2 * 3;
 +
val it = 7 : int
  
 
==实现==
 
==实现==
*[[F Sharp|F#]][[.NET]]框架的ML实现。
+
[[文件:Alpaca-language.png|right|Alpaca]]
 +
 
 +
ML 家族的两个主要的方言是 Standard ML 和 [[OCaml]]。ML 的实力大多被用于语言设计和操作,比如建构编译器、分析器、定理证明器。ML 确立了静态类型函数式编程范型,从而在编程语言历史上占有显要地位,它的思想在影响了众多的语言,例如:[[Haskell]]、[https://zh.wikipedia.org/wiki/Nemerle Nemerle] [http://www.ats-lang.org/ ATS] 和 [[Elm]]。
 +
 
 +
*[http://www.standardml.org/ Standard ML] 是 ML 的现代方言,ML 是用于 [https://en.wikipedia.org/wiki/Logic_for_Computable_Functions LCF(可计算函数逻辑)]定理证明计划的编程语言。Standard ML 在广泛使用的语言之中与众不同,源于它具有正式规定[https://smlfamily.github.io/sml97-defn.pdf 《The Definition of Standard ML》] 给出了语言的[https://home.cs.colorado.edu/~bec/courses/csci5535/reading/cardelli-typesystems.pdf 类型规则和操作语义]  
 
*[[OCaml]],ML的一种方言,支持面向对象编程。
 
*[[OCaml]],ML的一种方言,支持面向对象编程。
 +
*[[F Sharp|F#]],[[.NET]]框架的ML实现。
 +
*[[F*]] (pronounced F star)
 +
*[[isabelle]]
 +
*[https://github.com/mth/yeti Yeti] is ML style functional programming language, that runs on the [[JVM]].
 +
*[https://github.com/CakeML/ CakeML]
 +
*[https://github.com/alpaca-lang Alpaca] Functional programming inspired by ML for the [[Erlang VM]]
 +
*[https://futhark-lang.org/ Futhark] is a purely functional data-parallel programming language in the ML family, Written in [[Haskell]].
 +
*[[SML/NJ|Standard ML of New Jersey]]
 +
*[https://elsman.com/mlkit/ MLKit] The Standard ML Compiler and Toolkit
 +
*[[MLton]]
 +
*[https://www.polyml.org/ Poly/ML]
 +
*[https://www.cs.bham.ac.uk/research/projects/poplog/freepoplog.html The Free Poplog Portal] Poplog Standard ML
 +
 +
==项目==
 +
*[https://smlfamily.github.io/ Standard ML Family GitHub Project]
 +
*[https://hol-theorem-prover.org/ HOL Interactive Theorem Prover]
 +
*[https://github.com/urweb/urweb The Ur/Web Programming Language]
 +
 +
==文档==
 +
*[https://www.cs.cmu.edu/~rwh/isml/book.pdf Programming in Standard ML]
 +
 +
==图集==
 +
<gallery>
 +
image:HOL4-Emacs.png|HOL4 Emacs
 +
</gallery>
  
 
==链接==
 
==链接==
 
*[http://okmij.org/ftp/ML/ ML Programming]
 
*[http://okmij.org/ftp/ML/ ML Programming]
 +
*[http://www.mlworkshop.org/ ACM Workshop on ML]
 +
*[http://www.icfpconference.org/ International Conference on Functional Programming]
 +
*[http://www.sigplan.org/ SIGPLAN: Special Interest Group on Programming Languages]
 +
*[http://www.acm.org/ ACM: Association for Computing Machinery]
  
 
[[category:ML]]
 
[[category:ML]]
 
[[category:F Sharp]]
 
[[category:F Sharp]]
 
[[category:OCaml]]
 
[[category:OCaml]]
 +
[[category:proof assistant]]
 +
[[category:lambda]]
 +
[[category:Huihoo Foundation]]

2022年2月16日 (三) 04:31的版本

Wikipedia-35x35.png 您可以在Wikipedia上了解到此条目的英文信息 ML Thanks, Wikipedia.

ML 编程语言

目录

简介

ML 是一个通用的函数式编程语言,它是由爱丁堡大学的 Robin Milner 及他人在二十世纪七十年代晚期开发的。它的语法是从 ISWIM 得到的灵感。作为元语言的ML是为了帮助在 LCF 定理证明机中寻找证明策略而构想出来的。(之前的元语言是 pplambda,它联合了一阶逻辑演算和有类型的多态的λ演算)。它使用了 Hindley-Milner 类型推论算法来推测大多数值的类型,而不需要四处使用注解。

功能

ML一般被归为非纯函数式编程语言,因为它允许副作用和指令式编程。这一点和纯函数式编程语言,例如Haskell很不一样。

ML特性包括:传值呼叫(Call by value)的求值策略,一级函数,带有垃圾收集的自动内存管理,参数多态,静态数据类型,类型推论,代数数据类型,模式匹配和异常处理。

不像Haskell,ML使用及早求值,也就是说所有的子表达式总是被求值。导致的一个结果是你不能使用无穷表。然而,惰性求值产生的无穷表可以通过使用匿名函数来模拟。

今天在ML家族中有好几种语言:两种主要的方言是Standard ML和Caml,其他的包括F#-针对Microsoft .NET平台的开放研究项目。ML中的思想影响了众多的语言,例如Haskell,Cyclone和Nemerle。

ML的实力大多被用于语言设计和操作(编译器、分析器、定理证明机),但是它作为通用语言也被用于生化,金融系统,和宗谱数据库,一个P2P的客户/服务器程序等等。

标准

指南

Programming in Standard ML '97: An On-line Tutorial

很多 SML 实现提供交互式REPL,比如 SML/NJ

Debian

$ sudo apt install smlnj
$ sml
Standard ML of New Jersey v110.79 [built: Tue Aug  8 16:57:33 2017]
- 1 + 2 * 3;
val it = 7 : int

实现

Alpaca

ML 家族的两个主要的方言是 Standard ML 和 OCaml。ML 的实力大多被用于语言设计和操作,比如建构编译器、分析器、定理证明器。ML 确立了静态类型函数式编程范型,从而在编程语言历史上占有显要地位,它的思想在影响了众多的语言,例如:HaskellNemerle ATSElm

项目

文档

图集

链接

分享您的观点
个人工具
名字空间

变换
操作
导航
工具箱