SETL
   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 __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, th ...
(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 2018 ...
, "
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, 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.
''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