跳至內容

SETL

本頁使用了標題或全文手工轉換
維基百科,自由的百科全書
SETL
編程範型多範式: 指令式, 過程式, 結構化, 面向對象
設計者(Jack) Jacob T. Schwartz英語Jacob T. Schwartz
實作者科朗數學研究所
面市時間1969年,​55年前​(1969
型態系統動態
網站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

外部連結