Ahh, I see what you mean. I was not as familiar with the classical curry, as I was first introduced to the concept through PL. Thanks for clarifying with the great write-up!
On Feb 8, 2017 11:45 AM, "pd" <eukel...@gmail.com> wrote: > Thanks for your replies, I think your "subst" is exactly the same to > newlisp "expand" > > 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. >> >> >> 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 >> >> > yes, adder is an example of partial & total application but now we're > talking about the result of using curry (here the adder function) which > allows partial application. > > But when talking about the curry function itself the problem is the domain > of function, in classical curry the domain are functions of n arguments > (usually n>1) and the image are also functions with exactly 1 argument. > > Picolisp curry function does not follow the pattern, its domain is > completely different and also its image. In other words, you call classical > curry passing it a function argument but you call picolisp curry passing it > several arguments to replace certain symbols inside expressions. It's a > different kind of animal ;-) > > So you cannot apply picolisp curry to any general function, as you do in > classical curry, you must create a picolisp curry call ad hoc to get a > expected function returned > > With a classical curry function you can use (call 'f) to get a curryfied > version of function f which takes only one argument and returns a function > who takes only one argument and returns a function who... (supposing f has > n arguments you have n levels on "indirection"), with picolisp curry you > cannot call it like (call 'f) being f a general function (defined with de) > > The classical curry in picolisp is what Alex has defined a few emails > before ;-) > > > >> 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? >> >> >> > Absolutely unuseful in picolisp, what I tried to express is the concept of > functions returning functions characteristic of curryfied functions in > picolisp syntax. > > The reason for this expression being completely useless in picolisp *I > think* is the use of quote as an alias for lambda thus in practise > protecting them from evaluation and binding > > > > > > -- > Andrés > > *~ La mejor manera de librarse de la tentación es caer en ella**. ~ Oscar > Wilde* ~ >