HOME

TheInfoList



OR:

SETL (SET Language) is a very high-level programming language based on the mathematical theory of sets. It was originally developed at the
New York University New York University (NYU) is a private university, private research university in New York City, New York, United States. Chartered in 1831 by the New York State Legislature, NYU was founded in 1832 by Albert Gallatin as a Nondenominational ...
(NYU) Courant Institute of Mathematical Sciences in the late 1960s, by a group containing (Jack) Jacob T. Schwartz, R.B.K. Dewar, and E. Schonberg. Schwartz is credited with designing the language.


Design

SETL provides two basic aggregate data types: (unordered) ''sets'', and ''tuples''. The elements of sets and tuples can be of any arbitrary type, including sets and tuples themselves, except the undefined value om (sometimes capitalized: OM). ''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 Existentialism is a family of philosophy, philosophical views and inquiry that explore the human individual's struggle to lead an Authenticity (philosophy), authentic life despite the apparent Absurdity#The Absurd, absurdity or incomprehensibili ...
s of first-order predicate logic. SETL provides several
iterator In computer programming, an iterator is an object that progressively provides access to each item of a collection, in order. A collection may provide multiple iterators via its interface that provide items in different orders, such as forwards ...
s to produce a variety of loops over aggregate data structures.


Examples

Print all prime numbers from 2 to : print( in 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 CDC 6600, CDC Cyber, DEC VAX, IBM/370, Sun Microsystems, SUN workstation and Apollo Computer, APOLLO. In the 1970s, SETL was ported to the BESM-6, 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!"


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 New York University (NYU) is a private university, private research university in New York City, New York, United States. Chartered in 1831 by the New York State Legislature, NYU was founded in 1832 by Albert Gallatin as a Nondenominational ...
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 Programming languages created in 1969