ML programming language
ML is often referred to as an impure functional language, because it permits imperative programming, and therefore, side-effectss, unlike purely functional programming languages such as Haskell.
Features of ML include call-by-value evaluation strategy, first class functionss, automatic memory management through garbage collection, parametric polymorphism, static typing, type inference, algebraic data types, pattern matching, and exception handling. This particular combination of concepts allows to produce one of the best compilers available [1].
Unlike Haskell, ML uses eager evaluation, which means that all subexpressions are always evaluated, which means that you cannot use infinite lists per se. However, lazy evaluation and hence infinite lists can be simulated, through use of anonymous functions.
Today there are several languages in the ML family; the most popular are SML (Standard ML) and Ocaml (Objective Caml). Ideas from ML influenced several other languages, especially ones designed at universities. Examples include Cyclone and Nemerle.
An open research project, F# was created. It is a language and compiler targetting the Microsoft .NET platform, with syntax based largely on Ocaml. It is freely available from the F# website.
ML's strengths are mostly applied in language design and manipulation (compilers, analyzers, theorem provers), but ML is also used in bioinformatics, in financial systems, in a genealogical database, a peer-to-peer client/server program, etc.
External links
- Comparison of the speed of various languages
- Moscow ML, a popular implementation of Standard ML
- F#, an ML implementation using the Microsoft .NET framework
| Major programming languages (more) | ||
| Ada | ALGOL | APL | AWK | BASIC | C | C++ | C# | COBOL | Delphi | Eiffel | Fortran | Haskell | IDL | Java | JavaScript | Lisp | LOGO | ML | Objective-C | Pascal | Perl | PHP | PL/I | Prolog | Python | Ruby | SAS | Scheme | sh | Simula | Smalltalk | SQL | Visual Basic | ||