SETL provides two basic aggregate data types: (unordered) sets, and tuples.[1][2][5] The elements of sets and tuples can be of any arbitrary type, including sets and tuples themselves, except the undefined value om[1] (sometimes capitalized: OM).[6]Maps are provided as sets of pairs (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][7]
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 workstation and APOLLO.[9]
In the 1970s, SETL was ported to the BESM-6, ES EVM and other Russian computer systems.[10]
SETL was used for an early implementation of the programming language Ada, named the NYU Ada/ED translator.[11] This later became the first validated Ada implementation, certified on April 11, 1983.[12]
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!"[13]
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.[14] 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.[14]
^Dewar, Robert B. K.; Fisher Jr., Gerald A.; Schonberg, Edmond; Froelich, Robert; Bryant, Stephen; Goss, Clinton F.; Burke, Michael (November 1980). "The NYU Ada translator and interpreter". Proceeding of the ACM-SIGPLAN symposium on Ada programming language - SIGPLAN '80. Vol. 15. pp. 194–201. doi:10.1145/948632.948659. ISBN0-89791-030-3. S2CID10586359.
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. ISBN0-387-96399-5.