SETL

Last updated
SETL
Paradigm multi-paradigm: imperative, procedural, structured, object-oriented
Designed by (Jack) Jacob T. Schwartz
Developer Courant Institute of Mathematical Sciences
First appeared1969;56 years ago (1969)
Stable release
1.1 / January 7, 2005;20 years ago (2005-01-07)
Typing discipline Dynamic
Platform CDC 6600, CDC Cyber, DEC VAX, IBM/370, Sun workstation, Apollo, BESM-6, ES EVM, others
Website setl.org
Influenced by
ALGOL 60
Influenced
SETL2, ISETL, SETLX, Starset, ABC

SETL (SET Language) is a very high-level programming language [1] based on the mathematical theory of sets. [2] [3] 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, [1] [3] R.B.K. Dewar, and E. Schonberg. [1] Schwartz is credited with designing the language. [4]

Contents

Design

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]

SETL provides quantified boolean expressions constructed using the universal and existential quantifiers of first-order predicate logic. [1] [7]

SETL provides several iterators to produce a variety of loops over aggregate data structures. [1] [8]

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. [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]

Interactive SET Language (ISETL) is a variant of SETL used in discrete mathematics. [15]

GNU SETL is a command-line utility that implements and extends SETL. [16]

References

  1. 1 2 3 4 5 6 7 8 9 Schwartz, J. T.; Dewar, R. B. K.; Schonberg, E.; Dubinsky, E. (1986). "Programming with Sets" . SpringerLink: v–vii, 2, 48, 53, 57–58, 63, 113ff. doi:10.1007/978-1-4613-9575-1.
  2. 1 2 "GNU SETL Om". setl.org. Retrieved 2024-04-24.
  3. 1 2 Markoff, John (2009-03-04). "Jacob T. Schwartz, 79, Restless Scientist, Dies". The New York Times. ISSN   0362-4331 . Retrieved 2024-04-24.
  4. Computational Logic and Set Theory. pp. vii. doi:10.1007/978-0-85729-808-9.
  5. 1 2 "Chapter 2". www.settheory.com. Retrieved 2024-04-24.
  6. "Chapter 3". www.settheory.com. Retrieved 2024-04-24.
  7. 1 2 "Chapter 3". www.settheory.com. Retrieved 2024-04-24.
  8. "Chapter 4". www.settheory.com. Retrieved 2024-04-24.
  9. Schwartz, J.T.; Dewar, R.B.K.; Dubinsky, E.; Schonberg, E. (1986). Programming with sets: An Introduction to SETL. New York, New York: Springer-Verlag. ISBN   978-1-4613-9577-5.
  10. И.В. Поттосин, ed. (2001). Становление новосибирской школы программирования (мозаика воспоминаний) [Formation of the Novosibirsk school of programming (mosaic of memories)](PDF) (in Russian). Новосибирск: Институт систем информатики им. А. П. Ершова СО РАН. pp. 106–113.
  11. 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. ISBN   0-89791-030-3. S2CID   10586359.
  12. SofTech Inc. (1983-04-11). "Ada Compiler Validation Summary Report: NYU Ada/ED, Version 19.7 V-001". Waltham, Massachusetts. Archived from the original on June 7, 2017. Retrieved 2010-12-16.
  13. Python-Dev: SETL (was: Lukewarm about range literals)
  14. 1 2 "SETL2 – EDM2". www.edm2.com. Retrieved 2024-04-24.
  15. Baxter Hastings, Nancy; Dubinsky, Ed; Levin, Gary (1989). Learning discrete mathematics with ISETL. New York: Springer-Verlag. ISBN   978-0-387-96898-8.
  16. "GNU SETL". setl.org. Retrieved 2024-04-24.

Further reading