- Subject: Re: Some questions
 
- From: "John E. Davis" <davis@xxxxxxxxxxxxx>
 
- Date: Mon, 23 Jun 2003 10:54:48 -0400
 
Joerg Sommer <joerg@xxxxxxxxxxxx> wrote:
>Is there any advantage in use the polish syntax?
The main advantage is that the preparsing step is skipped.  The
preparser converts the infix notation (a+b) to RPN (a b +).  The
downside is that some of the higher level constructs cannot be
expressed in S-Lang's RPN notation.   For example, consider
   define foo ()
   {
      _pop_n (_NARGS);
      vmessage ("_NARGS = %d", _NARGS);
   }
Calling this function using
   foo (1,2,3);
will result in _NARGS = 3.  However, calling it with
   . 1 2 3 foo
results in _NARGS = 0.  This is because the preparser generates extra
code to compute the number of arguments passed to the function.
S-Lang v2 will produce even more code.  Consider:
   define foo ()
   {
      _pop_n (_NARGS);
      vmessage ("_NARGS = %d", _NARGS);
      return 1;
   }
Calling it via 
   foo (1, 2, 3);
with the current versioon of S-Lang will result in 1 being left on the
stack.  However, S-Lang 2 will generate code to silently remove the
1 from the stack.  S-Lang 2 will introduce an operator called __push
that may be used to override this behavior:
   foo (1,2,3);               % ==> nothing on stack
   __push foo (1, 2, 3);      % ==> 1 left on stack
   1;                         % a statement with no effect
   __push 1;                  % 1 left on stack
For many, this will be a welcome change.
Thanks,
--John
   
-- 
John E. Davis                   Center for Space Research/AXAF Science Center
617-258-8119                    One Hampshire St., Building NE80-6019
http://space.mit.edu/~davis     Cambridge, MA  02139-4307
--------------------------
To unsubscribe send email to <jed-users-request@xxxxxxxxxxx> with
the word "unsubscribe" in the message body.
Need help? Email <jed-users-owner@xxxxxxxxxxx>.
  [2003 date index]
  [2003 thread index]
  
  [Thread Prev] [Thread Next]
      
  [Date Prev] [Date Next]