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