SETL (SET Language) is a
very high-level programming language A very high-level programming language (VHLL) is a programming language with a very high level of abstraction, used primarily as a professional programmer productivity tool.
VHLLs are usually domain-specific languages, limited to a very specific ap ...
based on the mathematical
theory of sets. It was originally developed by (Jack)
Jacob T. Schwartz
__NOTOC__
Jacob Theodore "Jack" Schwartz (January 9, 1930 – March 2, 2009) was an American mathematician, computer scientist, and professor of computer science at the New York University Courant Institute of Mathematical Sciences. He was the ...
at the
New York University
New York University (NYU) is a private research university in New York City. Chartered in 1831 by the New York State Legislature, NYU was founded by a group of New Yorkers led by then-Secretary of the Treasury Albert Gallatin.
In 1832, the ...
(NYU)
Courant Institute of Mathematical Sciences
The Courant Institute of Mathematical Sciences (commonly known as Courant or CIMS) is the mathematics research school of New York University (NYU), and is among the most prestigious mathematics schools and mathematical sciences research cente ...
in the late 1960s.
Design
SETL provides two basic aggregate data types: ''unordered sets'', and ''sequences'' (the latter also called ''tuples''). The elements of sets and tuples can be of any arbitrary type, including sets and tuples themselves. ''Maps'' are provided as sets of ''pairs'' (i.e., tuples of length 2) and can have arbitrary domain and range types. Primitive operations in SETL include set membership, union, intersection, and power set construction, among others.
SETL provides quantified boolean expressions constructed using the
universal
Universal is the adjective for universe.
Universal may also refer to:
Companies
* NBCUniversal, a media and entertainment company
** Universal Animation Studios, an American Animation studio, and a subsidiary of NBCUniversal
** Universal TV, a ...
and
existential quantifier
In predicate logic, an existential quantification is a type of quantifier, a logical constant which is interpreted as "there exists", "there is at least one", or "for some". It is usually denoted by the logical operator symbol ∃, which, w ...
s of
first-order predicate logic
First-order logic—also known as predicate logic, quantificational logic, and first-order predicate calculus—is a collection of formal systems used in mathematics, philosophy, linguistics, and computer science. First-order logic uses quantifie ...
.
SETL provides several
iterator
In computer programming, an iterator is an object that enables a programmer to traverse a container, particularly lists. Various types of iterators are often provided via a container's interface. Though the interface and semantics of a given iterat ...
s to produce a variety of loops over aggregate data structures.
Examples
Print all prime numbers from 2 to N:
print(
_in_ _in_[2..N">_forall_m_in__.html" ;"title="..N.html" ;"title="..N.html" ;"title=" in [2..N"> in [2..N"> forall m in "> n mod m > 0;
The notation is similar to list comprehension.
A factorial procedure definition:
procedure factorial(n); -- calculates the factorial n!
return if n = 1 then 1 else n * factorial(n - 1) end if;
end factorial;
A more conventional SETL expression for factorial (n > 0):
*/[1..n]
Uses
Implementations of SETL were available on the DEC VAX, IBM/370, Sun Microsystems, SUN workstation and Apollo Computer, APOLLO.
In the 1970s, SETL was ported to the
BESM-6
BESM-6 (russian: БЭСМ-6, short for ''Большая электронно-счётная машина'', i.e. 'Large Electronic Calculating Machine') was a Soviet electronic computer of the BESM series. It was the first Soviet second-generation ...
,
ES EVM
The ES EVM (russian: Единая система электронных вычислительных машин (ЕС ЭВМ), translit=Yedinaya sistema electronnykh vytchislitel'nykh mashin (ES EVM), "Unified System of Electronic Computers"), o ...
and other Russian computer systems.
SETL was used for an early implementation of the programming language
Ada
Ada may refer to:
Places
Africa
* Ada Foah, a town in Ghana
* Ada (Ghana parliament constituency)
* Ada, Osun, a town in Nigeria
Asia
* Ada, Urmia, a village in West Azerbaijan Province, Iran
* Ada, Karaman, a village in Karaman Province, ...
, named the NYU Ada/ED translator. This later became the first validated Ada implementation, certified on April 11, 1983.
According to
Guido van Rossum
Guido van Rossum (; born 31 January 1956) is a Dutch programmer best known as the creator of the Python programming language, for which he was the " benevolent dictator for life" (BDFL) until he stepped down from the position on 12 July 20 ...
, "
Python
Python may refer to:
Snakes
* Pythonidae, a family of nonvenomous snakes found in Africa, Asia, and Australia
** ''Python'' (genus), a genus of Pythonidae found in Africa and Asia
* Python (mythology), a mythical serpent
Computing
* Python (pro ...
's predecessor,
ABC
ABC are the first three letters of the Latin script known as the alphabet.
ABC or abc may also refer to:
Arts, entertainment, and media Broadcasting
* American Broadcasting Company, a commercial U.S. TV broadcaster
** Disney–ABC Television ...
, was inspired by SETL --
Lambert Meertens
Lambert Guillaume Louis Théodore Meertens or L.G.L.T. Meertens (born 10 May 1944, in Amsterdam) is a Dutch computer scientist and professor. , he is a researcher at the Kestrel Institute, a nonprofit computer science research center in Palo Alt ...
spent a year with the SETL group at NYU before coming up with the final ABC design!"
Python-Dev: SETL (was: Lukewarm about range literals)
/ref>
Language variants
''SET Language 2'' (SETL2), a backward incompatible descendant of SETL, was created by Kirk Snyder of the Courant Institute of Mathematical Sciences at New York University in the late 1980s. Like its predecessor, it is based on the theory and notation of finite sets, but has also been influenced in syntax and style by the Ada language.
''Interactive SET Language'' (ISETL) is a variant of SETL used in discrete mathematics
Discrete mathematics is the study of mathematical structures that can be considered "discrete" (in a way analogous to discrete variables, having a bijection with the set of natural numbers) rather than "continuous" (analogously to continuous f ...
.
''GNU SETL''
is a command-line utility that extends and implements SETL.
References
Further reading
* Schwartz, Jacob T., "Set Theory as a Language for Program Specification and Programming". Courant Institute of Mathematical Sciences, New York University, 1970.
* Schwartz, Jacob T., "On Programming, An Interim Report on the SETL Project", Computer Science Department, Courant Institute of Mathematical Sciences, New York University (1973).
* Schwartz, Jacob T., Dewar, R.B.K., Dubinsky, E., and Schonberg, E., ''Programming With Sets: An Introduction to SETL'', 1986. .
External links
*
''Programming in SETL'' and other things
SETL Historical Sources Archive
{{Authority control
Academic programming languages
Set theoretic programming languages
1969 introductions