>>>>> "M" == M Luedde <[EMAIL PROTECTED]> writes:
M> Hello! M> The guile-tutorial provides an example calculating the factorial of M> 500. M> The non-tail-recursive version from the tutorial yields a stack M> overflow on my system. A tail-recursive implementation works. Many thanks for the report. However, this is broadly a feature, not a bug. Unless you think that Guile should have an unlimited stack size, a non-tail-recursive factorial will always overflow the stack for a big enough number. You can examine and increase Guile's stack limit like this: guile> (debug-options 'full) show-file-name #t Show file names and line numbers in backtraces when not `#f'. A value of `base' displays only base names, while `#t' displays full names. stack 20000 Stack size limit (measured in words; 0 = no check). debug yes Use the debugging evaluator. backtrace yes Show backtrace on error. depth 20 Maximal length of printed backtrace. maxdepth 1000 Maximal number of stored backtrace frames. frames 3 Maximum number of tail-recursive frames in backtrace. indent 10 Maximal indentation in backtrace. width 79 Maximal width of backtrace. backwards no Display backtrace in anti-chronological order. procnames yes Record procedure names at definition. trace no *Trace mode. breakpoints no *Check for breakpoints. cheap yes *Flyweight representation of the stack at traps. guile> (debug-set! stack 200000) (show-file-name #t stack 200000 debug backtrace depth 20 maxdepth 1000 frames 3 indent 10 width 79 procnames cheap) guile> (fac 500) 12201368259911100687012387854230469262535743428031928421924135883858453731538819976054964475022032818630136164771482035841633787220781772004807852051593292854779075719393306037729608590862704291745478824249127263443056701732707694610628023104526442188787894657547771498634943677810376442740338273653974713864778784954384895955375379904232410612713269843277457155463099772027810145610811883737095310163563244329870295638966289116589747695720879269288712817800702651745077684107196243903943225364226052349458501299185715012487069615681416253590566934238130088562492468915641267756544818865065938479517753608940057452389403357984763639449053130623237490664450488246650759467358620746379251842004593696929810222639719525971909452178233317569345815085523328207628200234026269078983424517120062077146409794561161276291459512372299133401695523638509428855920187274337951730145863575708283557801587354327688886801203998823847021514676054454076635359841744304801289383138968816394874696588175045069! 26365338175055478128640000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 guile> Is this OK, or do you think the documentation needs improving somewhere? (If you do, it would be most helpful if you could suggest a patch ...) Neil _______________________________________________ Bug-guile mailing list [EMAIL PROTECTED] http://mail.gnu.org/mailman/listinfo/bug-guile