Hi, Russ,

What does "curried" mean in the context used here?

I think some examples will be worth thousand descriptions:

Ex #1
when I write:

f1: func [a b] [...]

and

f2: curried f1 [b]

it should mean this:

f2: func [a] [func [b] [f1 a b]]

So in words: the result should be a function that takes only part of
arguments of the original f1 and as the result it returns a function where
you can give the rest of arguments and receive the same value as if you
applied the original f1 directly to all arguments.

Ex #2

f1: func [a1 a2 a3 a4 a5] [...]
f2: curried f1 [a2 a4]

it should mean:

f2: func [a2 a4] [func [a1 a3 a5] [f1 a1 a2 a3 a4 a5]]

I think everything is clear now. The problem is, that Rebol *in general*
cannot safely return function as a result of some function (due to the
non-re-entrant nature of it's function calling, and faulty garbage
collector), except for some special cases, so it cannot work flawlessly
before some amount of interpreter debugging.

Ladislav

Reply via email to