Picolisp continues to astonish me with its 'Principle of Least Astonishment'... using @ variable arguments is much nicer.
/Lindsay # using pairlis2 and sublis from prior email... (de curri2 @ (let (Fun (next) Args (rest) Par (pairlis2 (car Fun) Args) dropP '((X Y) (cond ((null Y) X) (T (dropP (cdr X) (cdr Y))) ) ) ) (list (dropP (car Fun) Args) (car (sublis Par (cdr Fun))) ) ) ) -> curri2 : (setq Fun (curri2 '((X Y) (+ X Y)))) -> ((X Y) (+ X Y)) : (Fun 1 99) -> 100 : (setq Fun (curri2 '((X Y) (+ X Y)) 1) ) -> ((Y) (+ 1 Y)) : (Fun 99) -> 100 : (setq Fun (curri2 '((X Y) (+ X Y)) 1 99) ) -> (NIL (+ 1 99)) : (Fun) -> 100