On Sun, Feb 23, 2020 at 05:58:30AM -0700, Matthew Flatt wrote:

> 
> Converting loops into closed form requires more sophisticated and
> general induction reasoning than is typical in a compiler. Or it needs
> ad hoc pattern patching to cover a few cases --- which I have seen gcc
> do, but I don't think that's very common.
> 

If interest here, though not really converting loops into closed form:

A language I saw proposed in the 70's has a loop construct where the 
request to start a new interaation was done by an 'again' statement.

loop i := 3 
...
...
if ...
then
   ...
   ...
   again i+1
endif
endloop

Of course the again could occur in positions where it was a genuine 
recursive call.  In most situation, though, it would be recognised as a 
tail-recursion and be treated like a normal iteration.

And yes, there could be more than one loop variable, which would 
tranlate into more than one function parameter.

In a syntactic situation like this, it would be easier to eliminate a 
loop variable that was not used, because all the calls to the loop body 
would be explicitly present within the syntax.

-- hendrik

-- 
You received this message because you are subscribed to the Google Groups 
"Racket Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/racket-users/20200224123118.ejrxvnnusrk6isah%40topoi.pooq.com.

Reply via email to