Paradigms | Multi-paradigm: functional, imperative |
---|---|
Family | ML: Standard ML |
Developers | Bell Laboratories, Princeton University Lucent Technologies, Yale University (FLINT Project), AT&T Research [1] |
First appeared | 1988 |
Stable release | |
Typing discipline | strong, static, inferred |
Implementation language | Standard ML, C |
License | BSD-like [2] |
Filename extensions | .sml |
Website | www |
Influenced by | |
Standard ML | |
Influenced | |
Mythryl |
Standard ML of New Jersey (SML/NJ; Standard Meta-Language of New Jersey) is a compiler and integrated development environment for the programming language Standard ML. It is written in Standard ML, except for the runtime system in C language. It was originally developed jointly by Bell Laboratories and Princeton University. [1] It is free and open-source software released under a permissive software license (BSD-like).
Its name is a reference both to the American state of New Jersey in which Princeton and Bell Labs are located, and to Standard Oil of New Jersey, the famous oil monopoly of the early 20th century.
SML/NJ extends the SML'97 Basis Library with several added top-level structures: [3]
SysInfo
structure provides information about the runtime system, such as the operating system kind, type and version and whether or not the machine supports multiprocessing. [4] Weak
structure provides support for weak pointers. [5] Susp
structure implements the suspensions necessary for lazy evaluation (as opposed to eager evaluation). [6] Internals
structure provides access to several of the compiler internals, including methods to instantiate and modify the signal table. [7] Unsafe
structure provides unsafe access to data structures and runtime-system functions. [8] Also, SML/NJ provides some syntactic constructs that are not standard features of SML'97: [3]
#[exp0, exp1, ..., expn−1]
syntax and allows pattern-matching on them with analogous syntax.(apat1 | ... | apatn) => exp
.Successor ML is a term used to describe the next version of the language. The documents describing it have been extracted from the SML/NJ '97 files and made available as a GitHub repository of TeX documents which the community is expected to collaborate and grow the language. [11] Successor ML features can be enabled using the command-line option -Cparser.succ-ml=true
. [12]
Since at least 1998, [13] MLton [14] is the standard bootstrapping compiler, and includes some [15] support for Successor ML.
In 2008, work began on HaMLet, [16] a reference implementation of Successor ML written entirely in Standard ML. [17] As of 2018 [update] , HaMLet remains the only complete implementation of Successor ML, with added novel features. [15]
Since 2015, [18] the evolution of SML/NJ geared towards evolving the Basis library [19] and adding support for the Successor ML definition with the release of version 110.79. [12]
At the end of 2020, 64-bit support was added with the release of version 110.99. [18]
ML is a general-purpose, high-level, functional programming language. It is known for its use of the polymorphic Hindley–Milner type system, which automatically assigns the data types of most expressions without requiring explicit type annotations, and ensures type safety; there is a formal proof that a well-typed ML program does not cause runtime type errors. ML provides pattern matching for function arguments, garbage collection, imperative programming, call-by-value and currying. While a general-purpose programming language, ML is used heavily in programming language research and is one of the few languages to be completely specified and verified using formal semantics. Its types and pattern matching make it well-suited and commonly used to operate on other formal languages, such as in compiler writing, automated theorem proving, and formal verification.
OCaml is a general-purpose, high-level, multi-paradigm programming language which extends the Caml dialect of ML with object-oriented features. OCaml was created in 1996 by Xavier Leroy, Jérôme Vouillon, Damien Doligez, Didier Rémy, Ascánder Suárez, and others.
Standard ML (SML) is a general-purpose, high-level, modular, functional programming language with compile-time type checking and type inference. It is popular for writing compilers, for programming language research, and for developing theorem provers.
D, also known as dlang, is a multi-paradigm system programming language created by Walter Bright at Digital Mars and released in 2001. Andrei Alexandrescu joined the design and development effort in 2007. Though it originated as a re-engineering of C++, D is now a very different language. As it has developed, it has drawn inspiration from other high-level programming languages. Notably, it has been influenced by Java, Python, Ruby, C#, and Eiffel.
The Glasgow Haskell Compiler (GHC) is a native or machine code compiler for the functional programming language Haskell. It provides a cross-platform software environment for writing and testing Haskell code and supports many extensions, libraries, and optimisations that streamline the process of generating and executing code. GHC is the most commonly used Haskell compiler. It is free and open-source software released under a BSD license.
In computer science, type safety and type soundness are the extent to which a programming language discourages or prevents type errors. Type safety is sometimes alternatively considered to be a property of facilities of a computer language; that is, some facilities are type-safe and their usage will not result in type errors, while other facilities in the same language may be type-unsafe and a program using them may encounter type errors. The behaviors classified as type errors by a given programming language are usually those that result from attempts to perform operations on values that are not of the appropriate data type, e.g., adding a string to an integer when there's no definition on how to handle this case. This classification is partly based on opinion.
In computer-based language recognition, ANTLR, or ANother Tool for Language Recognition, is a parser generator that uses a LL(*) algorithm for parsing. ANTLR is the successor to the Purdue Compiler Construction Tool Set (PCCTS), first developed in 1989, and is under active development. Its maintainer is Professor Terence Parr of the University of San Francisco.
MLton is a whole-program optimizing compiler for the programming language Standard ML. MLton development began in 1997, and continues with a worldwide community of developers and users, who have helped to port MLton to several computing platforms. It is free and open-source software released under a Historical Permission Notice and Disclaimer. MLton was a participating organization in the 2013 Google Summer of Code.
Phalanger is a compiler front end for compiling PHP source code into CIL byte-code, which can be further processed by the .NET Framework's just-in-time compiler. The project was started at Charles University and is supported by Microsoft. Phalanger was discontinued in favor of the more modern PeachPie compiler, which utilizes the Roslyn API.
Dart is a programming language designed by Lars Bak and Kasper Lund and developed by Google. It can be used to develop web and mobile apps as well as server and desktop applications.
Elm is a domain-specific programming language for declaratively creating web browser-based graphical user interfaces. Elm is purely functional, and is developed with emphasis on usability, performance, and robustness. It advertises "no runtime exceptions in practice", made possible by the Elm compiler's static type checking.
Idris is a purely-functional programming language with dependent types, optional lazy evaluation, and features such as a totality checker. Idris may be used as a proof assistant, but is designed to be a general-purpose programming language similar to Haskell.
GraalVM is a Java Development Kit (JDK) written in Java. The open-source distribution of GraalVM is based on OpenJDK, and the enterprise distribution is based on Oracle JDK. As well as just-in-time (JIT) compilation, GraalVM can compile a Java application ahead of time. This allows for faster initialization, greater runtime performance, and decreased resource consumption, but the resulting executable can only run on the platform it was compiled for.
Swift is a high-level general-purpose, multi-paradigm, compiled programming language created by Chris Lattner in 2010 for Apple Inc. and maintained by the open-source community. Swift compiles to machine code and uses an LLVM-based compiler. Swift was first released in June 2014 and the Swift toolchain has shipped in Xcode since Xcode version 6, released in September 2014.
Nim is a general-purpose, multi-paradigm, statically typed, compiled high-level system programming language, designed and developed by a team around Andreas Rumpf. Nim is designed to be "efficient, expressive, and elegant", supporting metaprogramming, functional, message passing, procedural, and object-oriented programming styles by providing several features such as compile time code generation, algebraic data types, a foreign function interface (FFI) with C, C++, Objective-C, and JavaScript, and supporting compiling to those same languages as intermediate representations.
WebAssembly (Wasm) defines a portable binary-code format and a corresponding text format for executable programs as well as software interfaces for facilitating communication between such programs and their host environment.
ZPE Programming Environment, formerly the Zenith Parsing Engine is a general-purpose compiler, parser and runtime environment for the YASS language designed for educational use as well as for its general use. The language it interprets, YASS, is an interpreted, high-level, general-purpose programming language. YASS is largely built upon making the language easy to read and use, with optional support for syntaxes such as curly-bracket syntax. YASS supports dynamic typing or static typing, as well as strong typing and weak typing.
Reason, also known as ReasonML, is a general-purpose, high-level, multi-paradigm, functional and object-oriented programming language and syntax extension and toolchain for OCaml created by Jordan Walke, who also created the React framework, at Facebook. Reason uses many syntax elements from JavaScript, compiles to native code using OCaml's compiler toolchain, and can compile to JavaScript using the ReScript compiler.