SETL

Source: Wikipedia, the free encyclopedia.
SETL
Developer
Courant Institute of Mathematical Sciences
First appeared1969; 55 years ago (1969)
Stable release
1.1 / January 7, 2005; 19 years ago (2005-01-07)
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 containing (Jack) Jacob T. Schwartz,[1][3] R.B.K. Dewar, and E. Schonberg.[1]

Design

SETL provides two basic aggregate data types: (unordered) sets, and tuples.[1][2][4] 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)[5]. Maps are provided as sets of pairs (i.e., tuples of length 2) and can have arbitrary domain and range types.[1][4] Primitive operations in SETL include set membership, union, intersection, and power set construction, among others.[1][6]

SETL provides quantified boolean expressions constructed using the

first-order predicate logic.[1][6]

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

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 DEC

IBM/370, SUN workstation and APOLLO.[8]
In the 1970s, SETL was ported to the BESM-6, ES EVM and other Russian computer systems.[9]

SETL was used for an early implementation of the programming language Ada, named the NYU Ada/ED translator.[10] This later became the first validated Ada implementation, certified on April 11, 1983.[11]

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!"[12]

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

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

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

References

  1. ^ .
  2. ^ a b "GNU SETL Om". setl.org. Retrieved 2024-04-24.
  3. ^
    ISSN 0362-4331
    . Retrieved 2024-04-24.
  4. ^ a b "CHAPTER 2". www.settheory.com. Retrieved 2024-04-24.
  5. ^ "CHAPTER 3". www.settheory.com. Retrieved 2024-04-24.
  6. ^ a b "CHAPTER 3". www.settheory.com. Retrieved 2024-04-24.
  7. ^ "CHAPTER 4". www.settheory.com. Retrieved 2024-04-24.
  8. .
  9. ^ И.В. Поттосин, ed. (2001). Становление новосибирской школы программирования (мозаика воспоминаний) [Formation of the Novosibirsk school of programming (mosaic of memories)] (PDF) (in Russian). Новосибирск: Институт систем информатики им. А. П. Ершова СО РАН. pp. 106–113.
  10. S2CID 10586359
    .
  11. ^ SofTech Inc., Waltham, MA (1983-04-11). "Ada Compiler Validation Summary Report: NYU Ada/ED, Version 19.7 V-001". Archived from the original on June 7, 2017. Retrieved 2010-12-16.{{cite web}}: CS1 maint: multiple names: authors list (link)
  12. ^ Python-Dev: SETL (was: Lukewarm about range literals)
  13. ^ a b "SETL2 - EDM2". www.edm2.com. Retrieved 2024-04-24.
  14. .
  15. ^ "GNU SETL". setl.org. Retrieved 2024-04-24.

Further reading

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

External links

This page is based on the copyrighted Wikipedia article: SETL. Articles is available under the CC BY-SA 3.0 license; additional terms may apply.Privacy Policy