But picolisp curry function doesn't do that, it simply returns a lambda with 1 parameter having the other one properly substituted with its value thus making impossible to partially apply the returned function
I still think 'curry' is what you want. Note that 'curry' works with an arbitrary number of parameters, e.g. (curry (@X @Y @Z) ... ) As far as partial application, wasn't 'adder' an example of that? : (adder 3) -> ((X) (+ X 3)) # partial application : ((adder 3) 7) # used as function call -> 10 I'm not sure that a structure such as ((X) '((Y) (+ X Y))) would be very useful in PL, though it could certainly be built with our friends 'fill' or 'macro'. But I'm also not sure I understood your question entirely. What that helpful at all?