NPL is a functional programming language with pattern matching designed by Rod Burstall and John Darlington in 1977. The language allows certain sets and logic constructs to appear on the right-hand side of definitions, e.g.setofeven(X) <= <:x: x in X & even(x) :>