could be used to change the updater component of a doublet. Functions Variables could hold values of any type, including functions, which were first-class objects. Thus, the following constructs function max x y; if x > y then x else y close end; and vars max; lambda x y; if x > y then x else y close end -> max; were equivalent. An interesting operation on functions was partial application, (sometimes referred to as "currying"). In partial application some number of the rightmost arguments of the function (which would be the last ones placed on the stack before the function is involved) were frozen to given values, to produce a new function of fewer arguments, which is a closure of the original function. For instance, consider a function for computing general second-degree polynomials: function poly2 x a b c; a * x * x + b * x + c end; This could be bound, for instance as vars less1squared; poly2(% 1, -2, 1%) -> less1squared; such that the expression less1squared(3) applies the closure of poly2 with three arguments frozen, to the argument 3, returning the square of (3 - 1), which is 4. The application of the partially applied function causes the frozen values (in this case 1, -2, 1) to be added to whatever is already on the stack (in this case 3), after which the original function poly2 is invoked. It then uses the top four items on the stack, producing the same result as poly2(3, 1, -2, 1) i.e. 1*3*3 + (-2)*3 + 1 Operator definition In POP-2, it was possible to define new operations (operators in modern terms). vars operation 3 +*; lambda x y; x * x + y * y end -> nonop +* The first line declares a new operation +* with precedence (priority) 3. The second line creates a function f(x,y)=x*x+y*y, and assigns it to the newly declared operation +*. History The original version of POP-2 was implemented on an Elliott 4130 computer in the University of Edinburgh (with only 64KB RAM, doubled to 128KB in 1972). POP-2 was ported to the ICT 1900 series on a 1909 at Lancaster University by John Scott in 1968. In the mid-1970s, POP-2 was ported to BESM-6 (POPLAN System). Later versions were implemented for CTL Modular One, PDP-10, ICL 1900 series (running the George operating system). Julian Davies, in Edinburgh, implemented an extended