SETL is a very high-level programming language based on Set Theory, a branch of mathematical logic that studies sets, or collections of objects.
Developed in the late 1960s by Professor Jacob T. Schwartz, the language was released in 1970. Schwartz was the founder and chairman of the Computer Science Department of the Courant Institute of Mathematical Sciences at New York University. He had previously designed the Artspeak programming language, which ran on the CDC 6600 mainframe computer, which used punch cards and batch processing.
SETL began as a tool for the high-level expression of complex algorithms, but soon found a role in rapid software prototyping, and was used to implement the first validated Ada compiler, later evolving into a general-purpose programming language.
SETL, which is short for SET Language, is a high-level language that can be used to create a large variety of programs. The language provides two basic aggregate data types: unordered sets, and sequences referred to as tuples. The elements of sets and tuples can be of an arbitrary type, including sets and tuples themselves. Maps are provided as sets of pairs, and can have an arbitrary domain and range types.
Like other very high-level class languages, which include Lisp, APL, and Prolog, SETL is intended to reduce the cost of programming through the allowance of direct manipulation of large composite objects, considerably more complex than mainstream languages like PASCAL, PL/I, and ALGOL.
There have been several implementations of variants of the language over the years. GNU SETL is an implementation that was designed to work well in a POSIX environment, to facilitate its use in a shell script. ISETLW, an interactive implementation of SETL was created by John Kirchmeyer and used to teach discrete mathematics. Other implementations include ASL, CIMS SETL, JSetL, PSETL, SETL2, and SETL-S. Proteus, a programming language in its own right, began as a variation of ISETL that supported thread and data parallelism.
While the focus of this category is on SETL, variants, and implementations of the language may be appropriate for this category, as well. SETL user groups, forums, tutorials, or guides may also be listed here.
 
 
Recommended Resources
SETL is a general-purpose, high-level programming language that uses sets and first-order mappings in its syntax and semantics. Full documentation for the GNU SETL implementation of the language is presented, and precompiled executables from selected platforms are included. A page called Dave’s Famous Original SETL Server allows users to play with SETL programming through the browser, and without downloading an implementation. Links to additional resources are included.
https://setl.org/setl/
Hosted on GitHub, and oriented on JavaCup, SetlCup is an LR parser-generator for the SetlX programming language, itself an implementation of SETL. The requirements for the use of the parser-generator are listed, along with a guide to calling SetlXup in the command line, or in Setix, are given. Program files and documentation may be cloned or freely downloaded from the site. Contributors of files to the repository are acknowledged, and development notes are posted to the site.
https://github.com/Prenglis/SetlCup
Created by Hakan Kjellerstrand, the page is focused on the SETL programming language, created by Jack Schwartz in the late 1960s, and to other implementations of the language, such as GNU SETL and SetlX. Links to other SETL resources are presented. Several programs written by Kjellerstrand in GNU SETL and in SetlX are included, consisting mostly of brief code examples and experiments from Project Euler, or from Rosetta Code. Examples of Java code for SetlX are also posted.
http://www.hakank.org/setl/
OSTI: Programming an Interim Report on the SETL Project
Published on June 1, 1975, the US Department of Energy’s Office of Scientific and Technical Information presents a summary of work during the past several years on SETL, a programming language whose basic concepts came from the mathematical theory of sets. Offered in two parts: generalities and an overview of the SETL language and examples of its use, the technical report can be downloaded from the site. Citation format include MLA, APA, Chicago, and BibTeX.
https://www.osti.gov/biblio/7196480
Available under a BSD License SetlX is an interpreter for the high-level SETL programming language, the most distinguishing feature of the language being its support for sets and lists. Designed by Karl Stroetmann, SetlX was designed to make the features of SETL accessible to contemporary computer science students, as it may be installed on an Android mobile device, macOS, Windows, or Unix-type platforms. A download page is available, and installation instructions are posted.
https://randoom.org/Software/SetlX/
Hosted by the Computer Science Department at NYU Courant Institute of Mathematical Sciences, the subpage features SETL2 programs with sample inputs and code, along with instructions for running SETL2 at NYU or for installing the language at a site that doesn’t have the language programs installed. Examples include very high level programs for graph reachability, cycle testing, and CFG nullability; as well as medium level programs and a lower level program.
https://cs.nyu.edu/cs/faculty/paige/courses/setl/software.html
WikiWikiWeb offers an overview of the SETL programming language, stating that it had been written by J. Schwartz when he was working at IBM during the summer of 1969. Based on Set theory, SETL was highly influential on other collection-oriented programming languages, according to the site. An overview of the language’s creation, development, and applications are put forth, including contrasts of SETL with the Prolog language and other relational languages.
http://wiki.c2.com/?SetlLanguage
SourceForge: SETL Programming Language Toolkit
Hosted on SourceForge, a collection of tools for the SETL programming language are made available for free download under the GNU Library or Lesser General Public License version 2.0 (LGPLv2). The tools include a LALR parser generator and a lexical scanner generator, as well as interpreters for the language, created in C and Scheme. Project administrators are identified, with contacts. Updates for the tools may be available, and reviews may be left online.
https://setl-lang.sourceforge.io/
The personal homepage of Jacob T. Schwartz, the creator of the SETL programming language, includes information on several topics, including articles, programming examples, and links to additional information about SETL, as well as Set theory and computational logic, upon which the SETL language was based. Others include Artspeak, an early programming language developed by Schwartz. Posthumously, his wife included the text of projects that Jack was working on prior to his death.
http://www.settheory.com/