In the past few days I'd been wondering about how to detect infinite
loops myself, so thanks for this advice, pepe!  I've put pepe's advice
on the Wiki under Debugging: http://haskell.org/haskellwiki/Debugging

Please feel free to flesh it out or add more advice as necessary.

-Denis

On Nov 21, 2007 6:20 AM, pepe <[EMAIL PROTECTED]> wrote:
> Hi Wolfgang,
>
> you are right, this behaviour is a bit surprising. What you want to
> observe can be obtained with, for example:
>
> loop c = putChar c >> loop c
>
> where loop is not a CAF anymore since it takes an argument.
> In the definition that you gave, main is a CAF and gets evaluated only
> the first time. The subsequent times it is entered do not trigger any
> further evaluation: the IO action is already evaluated and the only
> thing left to do is execute it. This does not trigger a breakpoint
> since no evaluation proper is done.
>
> For more information about CAFs see
>
> http://haskell.org/haskellwiki/Constant_applicative_form
>
> That page remarks that CAFs are an optimization which does  not alter
> referential transparency. Unfortunately their special behaviour is
> highlighted by the ghci debugger.
>
> If you want to find the reason for an infinite loop:
>
> 1. enable the flag -fbreak-on-error
> 2. run your expression with :trace (eg :trace loop 'a')
> 3. hit Ctrl-C while your program is stuck in the loop to have the
> debugger break in the loop.
> 4: use :history and :back to find out where the loop is located and why.
>
> Cheers
> pepe
>
>
>
> On 20/11/2007, at 16:09, Wolfgang Jeltsch wrote:
>
> > Hello,
> >
> > please consider the following program:
> >
> >    main = putChar 'A' >> main
> >
> > I load this into GHCi, enter :step main, followed by :step and a
> > second :step.
> > Although I would expect to get the As in the output step by step,
> > GHCi now
> > hangs inside the infinite loop.  Is this intentional?  To me, this
> > seems
> > rather weird.  I wanted to use GHCi's debugger to find the reason
> > for an
> > infinite recursion but from my experience it looks as if this might
> > not be
> > possible. :-(
> >
> > Best wishes,
> > Wolfgang
> > _______________________________________________
> > Glasgow-haskell-users mailing list
> > Glasgow-haskell-users@haskell.org
> > http://www.haskell.org/mailman/listinfo/glasgow-haskell-users
>
> _______________________________________________
> Glasgow-haskell-users mailing list
> Glasgow-haskell-users@haskell.org
> http://www.haskell.org/mailman/listinfo/glasgow-haskell-users
>



-- 
                              Denis
_______________________________________________
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users

Reply via email to