HOME

TheInfoList



OR:

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 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, t ...
(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 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, whe ...
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 iter ...
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 and other Russian computer systems. SETL was used for an early implementation of the programming language Ada, named the NYU Ada/ED translator. This later became the first validated Ada implementation, certified on April 11, 1983. According to Guido van Rossum, " Python's predecessor, ABC, was inspired by SETL -- Lambert Meertens 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 ...
.
''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