# SETL

(Redirected from SETL programming language)
"Setl" redirects here. For the indigenous location in Canada, see Bridge River Rapids.
Paradigm multi-paradigm: imperative, procedural, structured, Object-Oriented Jack Schwartz Courant Institute of Mathematical Sciences 1969 Dynamic setl.org ProSet, ABC, Slim

SETL (SET Language) is a very high-level programming language based on the mathematical theory of sets. It was originally developed by Jack Schwartz at the NYU Courant Institute of Mathematical Sciences in the late 1960s.

David Bacon, who was previously a PhD student in NYU with Jack Schwartz still actively maintains the compiler for SETL and its website.

## 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 quantifiers of first-order predicate logic.

SETL provides several iterators to produce a variety of loops over aggregate data structures.

## Examples

Print all prime numbers from 2 to N:

print([n in [2..N] | forall m in {2..n - 1} | 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

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 Ada programming language, known as the NYU Ada/ED translator.[1] This later became the first validated Ada implementation, certified on April 11, 1983.[2]