SETL

维基百科,自由的百科全书
跳转到导航 跳转到搜索
SETL
编程范型多范式: 指令式, 过程式, 结构化, 面向对象
设计者(Jack) Jacob T. Schwartz英语Jacob T. Schwartz
实现者科朗数学研究所
发行时间1969年,​57年前​(1969
当前版本
    Module:EditAtWikidata第29行Lua错误:attempt to index field 'wikibase' (a nil value)
    类型系统动态
    网站setl.org/setl/
    受影响于
    ALGOL 60
    影响语言
    SETL2, ISETL, SETLX, ABC

    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变体。

    参考[编辑]

    1. ^ Dewar, Robert B. K.; Fisher Jr., Gerald A.; Schonberg, Edmond; Froelich, Robert; Bryant, Stephen; Goss, Clinton F.; Burke, Michael. The NYU Ada Translator and Interpreter. ACM SIGPLAN Notices - Proceedings of the ACM-SIGPLAN Symposium on the Ada Programming Language. November 1980, 15 (11): 194–201. ISBN 0-89791-030-3. doi:10.1145/948632.948659. 
    2. ^ SofTech Inc., Waltham, MA. Ada Compiler Validation Summary Report: NYU Ada/ED, Version 19.7 V-001. 1983-04-11 [2010-12-16]. (原始内容存档于2017-06-07). 
    3. ^ SETL (was: Lukewarm about range literals). [2019-04-24]. (原始内容存档于2011-05-14). 

    进一步阅读[编辑]

    • Schwartz,Jacob T.,“将集合论用作程序规定和编程的语言”。 纽约大学Courant数学科学研究所,1970年。
    • Schwartz,Jacob T.,“关于编程,关于SETL项目的中期报告”,计算机科学系,Courant数学科学研究所,纽约大学(1973)。
    • Schwartz,Jacob T.,Dewar,RBK,Dubinsky,E。和Schonberg,E。, Programming With Sets:An Introduction to SETL ,1986。 ISBN 0-387-96399-5 国际标准书号   0-387-96399-5

    外部链接[编辑]