SETL

设计

SETL提供两种基本的聚合数据类型： 无序集和序列 （后者也称为元组 ）。 集合和元组的元素可以是任意类型，包括集合和元组本身。 映射是作为对的集合（即，长度为2的元组）提供的，并且可以具有任意的域和范围类型。 SETL中的原始操作包括集合成员资格，联合，交集和电源集构造等。 
SETL提供使用一阶谓词逻辑的通用和存在量词构造的量化布尔表达式。 
SETL提供了几个迭代器，可以在聚合数据结构上生成各种循环。

例子

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]

用途

在二十世纪七十年代，SETL 被移植到BESM-6 ，ES EVM 和其他俄罗斯的计算机系统。 
SETL 用于早期实现编程语言Ada，名为NYU Ada / ED 翻译器。这后来成为第一个经过验证的Ada 实施，于 1983 年 4 月 11 日通过认证。 
根据吉多·范罗苏姆的说法，“Python 的前身，ABC，受到了SETL 的启发- 兰伯特梅尔滕斯在纽约大学的SETL 小组工作了一年，然后才开始进行最终的ABC 设计！”

语言变种

SET 语言 2（SETL2）是SETL的一个不向后兼容的后继者，由纽约大学Courant数学科学研究所的柯克斯奈德于二十世纪八十年代后期创建。与其前身一样，它基于有限集的理论和符号，但也受到Ada语言的语法和风格的影响。 
交互式SET语言（ISETL）是离散数学中使用的SETL变体。