NPL是具有的函数式编程语言，由爱丁堡大学的和John Darlington在1977年设计。这个语言允许特定集合和逻辑构造符出现在定义的右手侧，比如：NPL解释器从左至右对这个列表生成器进行求值，所以条件可以提及任何出现在其左侧的约束（bound）变量。这叫做集合建构。NPL最终演化为Hope但丢弃了集合建构，它以列表推导式的形式重现出来在后来的函数式编程语言中。