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* ~
>

Reply via email to