comp.lang.ada
 help / color / mirror / Atom feed
From: jpwoodruff <jpwoodruff@gmail.com>
Subject: Idiom for tail recursion?
Date: Sun, 31 May 2009 14:04:34 -0700 (PDT)
Date: 2009-05-31T14:04:34-07:00	[thread overview]
Message-ID: <814eff38-3e01-4f70-aeb7-48a1ae651dfc@h23g2000vbc.googlegroups.com> (raw)

To entertain myself, I'm making a program that implements the DEVS
specification for discrete event simulation.  The book I'm studying
describes a reference implementation in Scheme.

The program proceeds by passing a series of messages among objects
that are instances of only a couple class hierarchies.  The messages
cycle among the objects in (fairly convoluted) cycles of mutually
recursive dispatching calls.  Simulation time advances as the program
traverses the outermost cycles of activation.

In scheme, the functions are tail-recursive - the last call of each of
the respective mutually recursive procedures does the recurse.  This
paradigm is crystal clear in that language and the implementation
doesn't grow the stack.

But in Ada it appears that I'm going to have a stack of calls that
won't return.  I guess the program will quit running when I raise an
exception for that purpose.  Or maybe it won't halt, who knows :-}.

I most definitely do not see a transform to an iterative algorithm.

So the question: what idiom comes fairly close to the flavor of the
tail-recursion and won't blow stack?

John




             reply	other threads:[~2009-05-31 21:04 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-05-31 21:04 jpwoodruff [this message]
2009-06-01  1:01 ` Idiom for tail recursion? John B. Matthews
2009-06-01  1:32 ` Gene
2009-06-02 14:00   ` John B. Matthews
2009-06-02 13:38 ` Jean-Pierre Rosen
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox