NPL语言

维基百科,自由的百科全书
跳转到导航 跳转到搜索
NPL
编程范型纯函数式
设计者Rod Burstall英语Rod Burstall, John Darlington英语John Darlington
发行时间1977年,​48年前​(1977
当前版本
    Module:EditAtWikidata第29行Lua错误:attempt to index field 'wikibase' (a nil value)
    网站{{URL|example.com|可选的显示文本}}Module:EditAtWikidata第29行Lua错误:attempt to index field 'wikibase' (a nil value)
    受影响于
    ISWIM, Lisp 1.5
    影响语言
    Hope

    NPLNew Programming Language:新编程语言),是具有模式匹配集合推导式的简单的纯函数式编程语言[1],在1973年至1975年,由爱丁堡大学Rod Burstall英语Rod BurstallJohn Darlington英语John Darlington,在关于程序变换英语Program transformation的工作中设计[2],并于1977年用POP-2实现[3]

    特征[编辑]

    Rod Burstall在1968年关于结构归纳法的一篇重要论文中[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)。