NPLNew Programming Language:新編程語言),是具有模式匹配集合推導式的簡單的純函數式編程語言[1],在1973年至1975年,由愛丁堡大學Rod Burstall英語Rod BurstallJohn Darlington英語John Darlington,在關於程序變換英語Program transformation的工作中設計[2],並於1977年用POP-2實現[3]

NPL
編程範型純函數式
設計者Rod Burstall英語Rod Burstall, John Darlington英語John Darlington
面市時間1977年,​47年前​(1977
啟發語言
ISWIM, Lisp 1.5
影響語言
Hope

特徵

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但丟棄了集合推導式,它以列表推導式的形式重現出來在後來的函數式編程語言中。

引用

  1. ^ David Turner英語David Turner (computer scientist). Some History of Functional Programming Languages (PDF). [2020-04-25]. (原始內容存檔 (PDF)於2020-04-15). 
  2. ^ 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). 
  3. ^ 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. 
  4. ^ R.M. Burstall. Proving properties of programs by structural induction (PDF). 1968 [2021-09-07]. (原始內容 (PDF)存檔於2022-01-28). 

本條目部分或全部內容出自以GFDL授權發佈的《自由線上電腦詞典》(FOLDOC)。