[fpc-pascal] Metaware

Tom Walsh tom at openhardware.net
Wed Jun 20 00:47:02 CEST 2007


Mark Wood wrote:
>
>>> I have found that there are some functional differences that Metaware has over
>>> fpc, one example is the yield() function which returns the intermediate result
>>> of a function call.
>>>     
>> ?
>>   
> '?' indeed! I am fascinated! What does yield do exactly... presumably 
> it returns a result from the function without closing down that 
> instance of the function? Amazing concept. I am still trying to work 
> out how that could be useful or even how it could be used (without 
> breaking stuff upstream).
>

This would be one example, a function which returns a value each time it 
is called.  There are some scoping rules which dictate whether the 
yield'ed function will init or continue from the last yield point:

============== begin ====================
iterator LoopStep(Start, Stop, StepSize   : StdInt) : StdInt;
  var
    i, Answer, NumLoops : StdInt;
  begin
    if StepSize = 0 then return;
    Answer := Start;
    NumLoops := ((Stop - Start) DIV StepSize) + 1;
    for i := 1 to NumLoops do begin
      Yield(Answer);
      Answer := Answer + StepSize;
    end;
  end;
============== snip =====================


Not sure why they found this terribly useful, but I don't write 
financial code...

TomW


-- 
Tom Walsh - WN3L - Embedded Systems Consultant
http://openhardware.net http://cyberiansoftware.com http://openzipit.org
"Windows? No thanks, I have work to do..."
----------------------------------------------------





More information about the fpc-pascal mailing list