Hi Romano,

On Monday, March 1, 2004, 4:19:32 PM, you wrote:

>> RPT>     do-alt find /reverse false
>> 
>> RPT>     find/alt /reverse false
>> 
>> You can't have that, the best we could get is:

RPT> I think that both are possible. I prefer the first one.

There's  no  way  to  do  that,  REBOL needs to know the number of
arguments to process BEFORE actually starting to collect them.

Even  if  you  were  going  to  change  the  interpreter  to allow
something  like  that,  you'd have two issues: 1) ambiguity and 2)
not being expression based anymore.

Ambiguity:

   f: func [x /ref] [...]
   g: func [x /ref] [...]
   f g x /ref

Does  /ref  belong  to  F  or  G?  You  need  to  parenthesize all
expressions.

No more expression based:

   f x either cond [/ref] [none]

would  you  expect this to work? If not, your proposal is useless,
as you can't propagate refinements anyway. If yes, you have no way
to  know  that  you  have  to evaluate the next expression without
knowing  that  it will return a REFINEMENT! value. If you evaluate
it  and  it  does  not return a refinement, you have evaluated the
expressions  in  the  wrong  order. If you don't and it would have
returned  a  refinement  you  are calling the function without all
arguments.   To   solve   this  you'd  need  to  parenthesize  all
expressions.

Regards,
   Gabriele.
-- 
Gabriele Santilli <[EMAIL PROTECTED]>  --  REBOL Programmer
Amiga Group Italia sez. L'Aquila  ---   SOON: http://www.rebol.it/

-- 
To unsubscribe from this list, just send an email to
[EMAIL PROTECTED] with unsubscribe as the subject.

Reply via email to