SETL
外觀
編程範型 | 多範式: 指令式, 程序式, 結構化, 物件導向 |
---|---|
設計者 | (Jack) Jacob T. Schwartz |
實作者 | 科朗數學研究所 |
釋出時間 | 1969年 |
型態系統 | 動態 |
網站 | 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變體。
參考
[編輯]- ^ 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.
- ^ 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).
- ^ 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 。
外部連結
[編輯]- 官方網站 ,GNU SETL
- 在SETL和其他東西上編程(頁面存檔備份,存於互聯網檔案館)