NPL語言
外觀
編程範型 | 純函數式 |
---|---|
設計者 | Rod Burstall, John Darlington |
面市時間 | 1977年 |
啟發語言 | |
ISWIM, Lisp 1.5 | |
影響語言 | |
Hope |
NPL(New Programming Language:新程式語言),是具有模式匹配和集合推導式的簡單的純函數式程式語言[1],在1973年至1975年,由愛丁堡大學的Rod Burstall和John Darlington,在關於程式變換的工作中設計[2],並於1977年用POP-2實現[3]。
特徵
[編輯]Rod Burstall在關於結構歸納法的一篇重要的早期論文中[4],向ISWIM擴充了仍用詞語來定義的代數類型定義,和用來分析資料結構的case
表達式。John Darlington的NPL,將case
表達式替代為在代數類型包括自然數上的多等式函式定義,例如:
fib (0) <= 1 fib (1) <= 1 fib (n+2) <= fib (n+1) + fib (n)
John Darlington的想法來自Kleene的遞迴方程。
NPL語言允許特定集合和邏輯構造符出現在定義的右手側,比如:
setofeven(X) <= <:x: x in X & even(x) :>
NPL直譯器從左至右對這個列表生成器進行求值,所以條件可以提及任何出現在其左側的約束(bound)變數。這叫做集合推導式。NPL最終演化為Hope但丟棄了集合推導式,它以列表推導式的形式重現出來在後來的函數式程式設計語言中。
參照
[編輯]- ^ David Turner. Some History of Functional Programming Languages (PDF). [2020-04-25]. (原始內容存檔 (PDF)於2020-04-15).
- ^ R.M. Burstall, J. Darlington. A transformation system for developing recursive programs. Journal of the Association for Computing Machinery: 24(1):44–67. 1977 [2021-09-06]. (原始內容存檔於2020-01-28).
- ^ John Darlington. Program Transformation and Synthesis: Present Capabilities. Research Report No. 77/43 (報告). Dept. of Computing and Control, Imperial College of Science and Technology, London. 1977.
- ^ R.M. Burstall. Proving properties of programs by structural induction (PDF). 1968 [2021-09-07]. (原始內容 (PDF)存檔於2022-01-28).