| SETL | |
|---|---|
| Paradigm | multi-paradigm:imperative,procedural,structured,object-oriented |
| Designed by | (Jack)Jacob T. Schwartz |
| Developer | Courant Institute of Mathematical Sciences |
| First appeared | 1969; 57 years ago (1969) |
| Stable release | 1.1 / January 7, 2005; 21 years ago (2005-01-07) |
| Typing discipline | Dynamic |
| Platform | CDC 6600,CDC Cyber, DECVAX,IBM/370,Sun workstation,Apollo,BESM-6,ES EVM, others |
| Website | setl |
| Influenced by | |
| ALGOL 60 | |
| Influenced | |
| SETL2,ISETL, SETLX, Starset,ABC | |
SETL (SET Language) is avery high-level programming language[1] based on the mathematicaltheory of sets.[2][3] It was originally developed at theNew York University (NYU)Courant Institute of Mathematical Sciences in the late 1960s, by a group including (Jack)Jacob T. Schwartz,[1][3] R.B.K. Dewar, and E. Schonberg.[1] Schwartz is credited with designing the language.[4]
SETL provides two basic aggregate data types: (unordered)sets, andtuples.[1][2][5] The elements of sets and tuples can be of any arbitrary type, including sets and tuples themselves, except the undefined valueom[1] (sometimes capitalized:OM).[6]Maps are provided as sets ofpairs (i.e., tuples of length 2) and can have arbitrary domain and range types.[1][5] Primitive operations in SETL include set membership, union, intersection, and power set construction, among others.[1][6]
SETL provides quantified boolean expressions constructed using theuniversal andexistential quantifiers offirst-order predicate logic.[1][6]
SETL provides severaliterators to produce a variety of loops over aggregate data structures.[1][7]
Print all prime numbers from 2 toN:
print([n in [2..N] | forall m in {2..n - 1} | n mod m > 0]);The notation is similar tolist 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]
Implementations of SETL were available on theCDC 6600,CDC Cyber, DECVAX,IBM/370,Sun workstation andApollo.[8]In the 1970s, SETL was ported to theBESM-6,ES EVM and other Russian computer systems.[9]
SETL was used for an early implementation of the programming languageAda, named the NYU Ada/ED translator.[10] This later became the first validated Ada implementation, certified on April 11, 1983.[11]
According toGuido 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!"[12]
SET Language 2 (SETL2), a backward incompatible descendant of SETL, was created by Kirk Snyder of the Courant Institute of Mathematical Sciences atNew York University in the late 1980s.[13] Like its predecessor, it is based on the theory and notation of finite sets, but has also been influenced insyntax and style by the Ada language.[13]
Interactive SET Language (ISETL) is a variant of SETL used indiscrete mathematics.[14]
GNU SETL is a command-line utility that implements and extends SETL.[15]