HOME

TheInfoList



OR:

Standard ML of New Jersey (SML/NJ; Standard Meta-Language of New Jersey) is a
compiler In computing, a compiler is a computer program that Translator (computing), translates computer code written in one programming language (the ''source'' language) into another language (the ''target'' language). The name "compiler" is primaril ...
and
integrated development environment An integrated development environment (IDE) is a Application software, software application that provides comprehensive facilities for software development. An IDE normally consists of at least a source-code editor, build automation tools, an ...
for the
programming language A programming language is a system of notation for writing computer programs. Programming languages are described in terms of their Syntax (programming languages), syntax (form) and semantics (computer science), semantics (meaning), usually def ...
Standard ML Standard ML (SML) is a General-purpose programming language, general-purpose, High-level programming language, high-level, Modular programming, modular, Functional programming, functional programming language with compile-time type checking and t ...
. It is written in Standard ML, except for the
runtime system In computer programming, a runtime system or runtime environment is a sub-system that exists in the computer where a program is created, as well as in the computers where the program is intended to be run. The name comes from the compile time ...
in C language. It was originally developed jointly by
Bell Laboratories Nokia Bell Labs, commonly referred to as ''Bell Labs'', is an American industrial research and development company owned by Finnish technology company Nokia. With headquarters located in Murray Hill, New Jersey, the company operates several lab ...
and
Princeton University Princeton University is a private university, private Ivy League research university in Princeton, New Jersey, United States. Founded in 1746 in Elizabeth, New Jersey, Elizabeth as the College of New Jersey, Princeton is the List of Colonial ...
. It is
free and open-source software Free and open-source software (FOSS) is software available under a license that grants users the right to use, modify, and distribute the software modified or not to everyone free of charge. FOSS is an inclusive umbrella term encompassing free ...
released under a
permissive software license A permissive software license, sometimes also called BSD-like or BSD-style license, is a free-software license which instead of copyleft protections, carries only minimal restrictions on how the software can be used, modified, and redistributed, ...
(BSD-like). Its name is a reference both to the American state of
New Jersey New Jersey is a U.S. state, state located in both the Mid-Atlantic States, Mid-Atlantic and Northeastern United States, Northeastern regions of the United States. Located at the geographic hub of the urban area, heavily urbanized Northeas ...
in which Princeton and Bell Labs are located, and to
Standard Oil of New Jersey Exxon Mobil Corporation ( ) is an American multinational oil and gas corporation headquartered in Spring, Texas, a suburb of Houston. Founded as the largest direct successor of John D. Rockefeller's Standard Oil, the modern company was formed ...
, the famous oil
monopoly A monopoly (from Greek language, Greek and ) is a market in which one person or company is the only supplier of a particular good or service. A monopoly is characterized by a lack of economic Competition (economics), competition to produce ...
of the early 20th century.


Features

SML/NJ extends the SML'97 Basis
Library A library is a collection of Book, books, and possibly other Document, materials and Media (communication), media, that is accessible for use by its members and members of allied institutions. Libraries provide physical (hard copies) or electron ...
with several added top-level structures: * ''System info'' – the SysInfo structure provides information about the runtime system, such as the
operating system An operating system (OS) is system software that manages computer hardware and software resources, and provides common daemon (computing), services for computer programs. Time-sharing operating systems scheduler (computing), schedule tasks for ...
kind, type and version and whether or not the machine supports
multiprocessing Multiprocessing (MP) is the use of two or more central processing units (CPUs) within a single computer system. The term also refers to the ability of a system to support more than one processor or the ability to allocate tasks between them. The ...
. * ''Weak pointers'' – the Weak structure provides support for weak pointers. * ''Lazy suspensions'' – the Susp structure implements the suspensions necessary for
lazy evaluation In programming language theory, lazy evaluation, or call-by-need, is an evaluation strategy which delays the evaluation of an Expression (computer science), expression until its value is needed (non-strict evaluation) and which avoids repeated eva ...
(as opposed to
eager evaluation In a programming language, an evaluation strategy is a set of rules for evaluating expressions. The term is often used to refer to the more specific notion of a ''parameter-passing strategy'' that defines the kind of value that is passed to the ...
). * ''
Compiler In computing, a compiler is a computer program that Translator (computing), translates computer code written in one programming language (the ''source'' language) into another language (the ''target'' language). The name "compiler" is primaril ...
internals'' – the Internals structure provides access to several of the compiler internals, including methods to instantiate and modify the signal table. * ''Unsafe access'' – the Unsafe structure provides unsafe access to data structures and runtime-system functions. * ''Visible compiler structures'' – SML/NJ also includes structures that provide access to the ML compiler, which contains substructures for execution profiling, control of compiler error-message printing and warnings, and customizable pretty printing. Also, SML/NJ provides some syntactic constructs that are not standard features of SML'97: * ''Vector expressions and patterns'' – SML/NJ allows the creation of vectors with the # 'exp''0, ''exp''1, ..., ''expn''−1/code> syntax and allows pattern-matching on them with analogous syntax. * ''Or-patterns'' – SML/NJ extends the syntax of SML'97 patterns to allow for a matching multiple patterns in a single rule, provided each pattern has the same type, using (''apat''1 , ... , ''apatn'') => exp . * ''Object language embedding'' – SML/NJ provides the quote/antiquote syntax that permits the embedding of expressions in an object language's concrete syntax within ML expressions and programs. * ''Higher-order modules'' – SML/NJ supports the parametrization of functors by allowing functors to be components of structures, in addition to Standard ML's parametric modules in the form of functors.


Development

''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 GitHub () is a Proprietary software, proprietary developer platform that allows developers to create, store, manage, and share their code. It uses Git to provide distributed version control and GitHub itself provides access control, bug trackin ...
repository of
TeX Tex, TeX, TEX, may refer to: People and fictional characters * Tex (nickname), a list of people and fictional characters with the nickname * Tex Earnhardt (1930–2020), U.S. businessman * Joe Tex (1933–1982), stage name of American soul singer ...
documents which the community is expected to collaborate and grow the language. Successor ML features can be enabled using the command-line option -Cparser.succ-ml=true. Since at least 1998, ''MLton'' is the standard
bootstrapping In general, bootstrapping usually refers to a self-starting process that is supposed to continue or grow without external input. Many analytical techniques are often called bootstrap methods in reference to their self-starting or self-supporting ...
compiler, and includes some support for Successor ML. In 2008, work began on ''HaMLet'', a reference implementation of ''Successor ML'' written entirely in Standard ML. , HaMLet remains the only complete implementation of Successor ML, with added novel features. Since 2015, the evolution of SML/NJ geared towards evolving the Basis library and adding support for the ''Successor ML'' definition with the release of version 110.79. At the end of 2020,
64-bit In computer architecture, 64-bit integers, memory addresses, or other data units are those that are 64 bits wide. Also, 64-bit central processing units (CPU) and arithmetic logic units (ALU) are those that are based on processor registers, a ...
support was added with the release of version 110.99.


See also

* Extended ML * Dependent ML


External links

* * * *
Hamlet


References

{{ML programming Procedural programming languages ML programming language family Bell Labs Princeton University Free and open source compilers Free computer libraries Programming languages created in 1988