Hi Romano,

<<Romano>>

And why not an in-line function like:

compose...

    do (func [] reduce [body])

<</Romano>>

Your suggestion doesn't seem to work (?) ...

<<Romano>>

I have others little questions on your code:

1) A little thing: couldn't loop start to none?

loop: none
...
   either loop [
    loop: 1
   ] [
    until [
     loop: none
     error? set/any 'result do (func [] reduce [body])
     not loop
    ]
    loop: none

<</Romano>>

Loop surely can start with the None value. But even then for the function to
work, we have to be able to detect three different states:

1) the first one is a fresh start, signaling that the loop must be started.

2) the second one is a situation, when the loop is "running" and a recursive
call was detected. The loop must continue.

3) the third one is a situation, when the loop is "running" and a recursive
call hasn't been detected. The loop must finish.

If we want to use logic! values, we have to use two variables, e.g. like:

loop: none
...
either loop [
    finish: none
] [
    until [
        finish: true
        error? set/any 'result exec (reduce [body])
        finish
    ]
    loop: none
...

<<Romano>>

2) You leave 'result global, why?

---
Ciao
Romano

<</Romano>>

Not only 'result, I left even the 'locals word global! It is a bug, I will
repair it and include to %Highfun.r Thanks for your feedback.

Cheers
    Ladislav


-- 
To unsubscribe from this list, please send an email to
[EMAIL PROTECTED] with "unsubscribe" in the 
subject, without the quotes.

Reply via email to