Paradigm | 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 |
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. Aside from its runtime system, which is written in C language, SML/NJ is written in Standard ML. 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 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, 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 drawing inspiration from other high-level programming languages, notably 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. The lead developers are Simon Peyton Jones and Simon Marlow.
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 an open-source whole-program optimizing compiler for Standard ML. MLton development began in 1997, and continues with a worldwide community of developers and users, who have helped to port MLton to a number of platforms. MLton was a participating organization in the 2013 Google Summer of Code.
Scala is a strong statically typed high-level general-purpose programming language that supports both object-oriented programming and functional programming. Designed to be concise, many of Scala's design decisions are intended to address criticisms of Java.
Programming languages are used for controlling the behavior of a machine. Like natural languages, programming languages follow rules for syntax and semantics.
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.
TypeScript is a free and open-source high-level programming language developed by Microsoft that adds static typing with optional type annotations to JavaScript. It is designed for the development of large applications and transpiles to JavaScript. Because TypeScript is a superset of JavaScript, all JavaScript programs are syntactically valid TypeScript, but they can fail to type-check for safety reasons.
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.
Swift is a high-level general-purpose, multi-paradigm, compiled programming language developed by Apple Inc. and the open-source community. Swift compiles to machine code, as it is an LLVM-based compiler. Swift was first released in June 2014, and the Swift toolchain has shipped in Xcode since version 6, released in 2014.
Nim is a general-purpose, multi-paradigm, statically typed, compiled high-level systems 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 defines a portable binary-code format and a corresponding text format for executable programs as well as software interfaces for facilitating interactions between such programs and their host environment.
Reason, also known as ReasonML, is a syntax extension and toolchain for OCaml created by Jordan Walke, who also created the React framework, at Facebook. Reason offers a syntax familiar to JavaScript programmers, and compiles to native code using OCaml's compiler toolchain. Reason code may also be compiled to JavaScript using the ReScript compiler.