SETL
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] Schwartz is credited with designing the language.[4] DesignSETL 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] ExamplesPrint 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] UsesImplementations of SETL were available on the 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 variantsSET 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 extends and implements SETL.[16] References
Further reading
External links |