Input Processing Loops in Haskell
Mark Conway Wirt
mark@ArsConcero.org
Tue, 13 Nov 2001 10:00:11 -0500
I apologize if this is a bit off-topic -- I'm asking it here because
if what I want to do is possible, it may only be possible with ghc
extensions, as opposed to vanilla Haskell......
In many types of applications, it's common to have a loop which
loops infinitely, of at least until some condition is met. For
example, in C-like syntax:
for (;;;) {
a = get_input();
if (a == GET_OUT) break;
do_comthing();
}
the above code could be used in an input-processing loop. The question is,
is something like this possible in Haskell? I realize that you can
use recursive calls to do something similar:
f a
| a == GET_OUT = a
| otherwise = f ( g a)
The problem is stack-growth. I can't figure out a way (I'm sort of a newbie)
to so something like the above without growing my stack infinitely.
I've seen something called "tail-recursion" discussed in comp.lang.functional
that *may* be relevant, but I can't find any concise explanation of this
concept.
So, is this possible in either Haskell or Haskell+ghc extensions?
TIA,
Mark.