From Surf Wiki (app.surf) — the open knowledge base
SETL
Programming language
Programming language
| Field | Value |
|---|---|
| name | SETL |
| paradigm | multi-paradigm: imperative, procedural, structured, object-oriented |
| designer | (Jack) Jacob T. Schwartz |
| developer | Courant Institute of Mathematical Sciences |
| released | |
| latest release version | 1.1 |
| latest release date | |
| typing | Dynamic |
| platform | CDC 6600, CDC Cyber, DEC VAX, IBM/370, Sun workstation, Apollo, BESM-6, ES EVM, others |
| website | |
| influenced by | ALGOL 60 |
| influenced | SETL2, ISETL, SETLX, Starset, ABC |
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 (NYU) Courant Institute of Mathematical Sciences in the late 1960s, by a group including (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 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
Implementations of SETL were available on the CDC 6600, CDC Cyber, DEC VAX, IBM/370, Sun workstation and Apollo.{{cite book In the 1970s, SETL was ported to the BESM-6, ES EVM and other Russian computer systems.{{cite book |trans-title=Formation of the Novosibirsk school of programming (mosaic of memories)
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 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.
GNU SETL is a command-line utility that implements and extends SETL.
References
References
- (1986). "Programming with Sets".
- "GNU SETL Om".
- (2009-03-04). "Jacob T. Schwartz, 79, Restless Scientist, Dies". The New York Times.
- (2011). "Computational Logic and Set Theory".
- "Chapter 2".
- "Chapter 3".
- "Chapter 4".
- (November 1980). "Proceeding of the ACM-SIGPLAN symposium on Ada programming language – SIGPLAN '80".
- SofTech Inc.. (1983-04-11). "Ada Compiler Validation Summary Report: NYU Ada/ED, Version 19.7 V-001".
- [http://mail.python.org/pipermail/python-dev/2000-August/008881.html Python-Dev: SETL (was: Lukewarm about range literals)]
- "SETL2 – EDM2".
- (1989). "Learning discrete mathematics with ISETL". Springer-Verlag.
- "GNU SETL".
This article was imported from Wikipedia and is available under the Creative Commons Attribution-ShareAlike 4.0 License. Content has been adapted to SurfDoc format. Original contributors can be found on the article history page.
Ask Mako anything about SETL — get instant answers, deeper analysis, and related topics.
Research with MakoFree with your Surf account
Create a free account to save articles, ask Mako questions, and organize your research.
Sign up freeThis content may have been generated or modified by AI. CloudSurf Software LLC is not responsible for the accuracy, completeness, or reliability of AI-generated content. Always verify important information from primary sources.
Report