The GForth debugger is giving me weird results when I'm trying stuff with recursion, for example take this factorial word
: FACTORIAL ( +n1 -- +n2) DUP 2 < IF DROP 1 EXIT THEN DUP 1- RECURSE * ; If I try 3 dbg FACTORIAL I get : FACTORIAL Scanning code... Nesting debugger ready! [ 1 ] 00003 7F4E5EC372F0 55ED908EF498 dup -> [ 2 ] 00003 00003 7F4E5EC372F8 55ED908EF1C0 2 -> [ 3 ] 00003 00003 00002 7F4E5EC37308 55ED908EF320 < -> [ 2 ] 00003 00000 7F4E5EC37310 55ED908EF0B8 IF -> [ 1 ] 00003 7F4E5EC37340 55ED908EF498 THEN dup -> [ 2 ] 00003 00003 7F4E5EC37348 55ED908EF1F8 1- -> [ 2 ] 00003 00002 7F4E5EC37350 55ED908EF070 FACTORIAL -> [ 3 ] 00003 00002 00001 7F4E5EC37360 55ED908EF218 * -> [ 2 ] 00003 00002 7F4E5EC37368 55ED908EF088 ; -> ok ok .s <1> 6 ok So the debugger makes it seem like when I run 3 FACTORIAL the result should be 2, 3 in the stack, which isn't what it should show. If I run 3 FACTORIAL without debugging then the result is 6 in the stack.