Jump to navigation
Jump to search

## Contents

## Design[edit]

## Examples[edit]

## Uses[edit]

## Language variants[edit]

## References[edit]

## Further reading[edit]

## External links[edit]

This article needs additional citations for verification. (April 2017) (Learn how and when to remove this template message) |

Paradigm | multi-paradigm: imperative, procedural, structured, object-oriented |
---|---|

Designed by | (Jack) Jacob T. Schwartz |

Developer | Courant Institute of Mathematical Sciences |

First appeared | 1969 |

Stable release |
1.1
/ January 7, 2005 |

Typing discipline | Dynamic |

Website |
setl |

Influenced by | |

ALGOL 60 | |

Influenced | |

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) Jacob T. Schwartz at the New York University (NYU) Courant Institute of Mathematical Sciences in the late 1960s.

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.

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]

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.^{[1]} This later became the first validated Ada implementation, certified on April 11, 1983.^{[2]}

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!"^{[3]}

*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.

**^**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".*ACM SIGPLAN Notices - Proceedings of the ACM-SIGPLAN Symposium on the Ada Programming Language*.**15**(11): 194–201. doi:10.1145/948632.948659. ISBN 0-89791-030-3.**^**SofTech Inc., Waltham, MA (1983-04-11). "Ada Compiler Validation Summary Report: NYU Ada/ED, Version 19.7 V-001". Retrieved 2010-12-16.**^**Python-Dev: SETL (was: Lukewarm about range literals)

- 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. ISBN 0-387-96399-5.

None of the audio/visual content is hosted on this site. All media is embedded from other sites such as GoogleVideo, Wikipedia, YouTube etc. Therefore, this site has no control over the copyright issues of the streaming media.

All issues concerning copyright violations should be aimed at the sites hosting the material. This site does not host any of the streaming media and the owner has not uploaded any of the material to the video hosting servers. Anyone can find the same content on Google Video or YouTube by themselves.

The owner of this site cannot know which documentaries are in public domain, which has been uploaded to e.g. YouTube by the owner and which has been uploaded without permission. The copyright owner must contact the source if he wants his material off the Internet completely.

Wikipedia content is licensed under the GFDL and (CC) license