SETL(SET语言)是一种基于数学集合论的领域特定的高级编程语言。它最初由(Jack)Jacob T. Schwartz于二十世纪六十年代末在纽约大学科朗数学研究所开发。
设计
SETL提供两种基本的聚合数据类型:无序的集合和序列(后者也称为元组)。集合和元组的元素可以是任意类型,包括集合和元组本身。映射是作为有序对(长度为2的元组)的集合提供的,并且可以具有任意的域和范围类型。SETL中的原始操作包括集合成员资格、联合、交集和幂集构造等。
SETL提供使用一阶谓词逻辑的全称和存在量词构造的量化布尔表达式。
SETL提供了几个迭代器,可以在聚合数据结构上生成各种循环。
例子
打印从2到N的所有素数:
print([n in [2..N] | forall m in {2..n - 1} | n mod m > 0]);
这个表示法类似于列表推导式。
阶乘过程的定义:
procedure factorial(n); -- calculates the factorial n! return if n = 1 then 1 else n * factorial(n - 1) end if; end factorial;
阶乘(n > 0)的更常用的SETL表达:
*/[1..n]
用途
在二十世纪七十年代,SETL被移植到BESM-6,ES EVM和其他俄罗斯的计算机系统。
SETL用于早期实现编程语言Ada,名为NYU Ada / ED翻译器。[1]这后来成为第一个经过验证的Ada实现,于1983年4月11日通过认证。[2]
根据吉多·范罗苏姆的说法,Python的先驱语言ABC,受到了SETL的启发:“兰伯特梅尔滕斯在纽约大学的SETL小组工作了一年,然后才开始进行最终的ABC设计!”[3]
语言变种
“SET语言2”(SETL2)是SETL的一个不向后兼容的后继者,由纽约大学Courant数学科学研究所的柯克斯奈德于二十世纪八十年代后期创建。与其前身一样,它基于有限集的理论和符号,但也受到Ada语言的语法和风格的影响。
“交互式SET语言”(ISETL)是离散数学中使用的SETL变体。
参考
进一步阅读
外部链接
Wikiwand in your browser!
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.