On Jun 22, Valeriya Pudova wrote:
> 
> (define (foo a b)
>    (for-each (lambda (e) (display e)(newline)) 
> (continuation-mark-set->context (current-continuation-marks))))
> 
> (define (bar a b)
>    (foo a b))
> 
> (bar 1 2)
> [...]
> 
> Interesting. There are no the function bar in the backtrace. Why?

Because it's no longer there -- the tail call replaces it.  Try to run
this in DrRacket (exactly as is, don't reindent):

                   (define (foo3 x)
                     (/ x "1"))

  (define (foo2 x)
    (foo3 x))
                   (define (foo1 x)
                     (list (foo2 x)))
  (define (foo0 x)
    (car (foo1 x)))

           (+ 1 (foo0 3))

and you'll see that the arrows skip `foo2'.

-- 
          ((lambda (x) (x x)) (lambda (x) (x x)))          Eli Barzilay:
                    http://barzilay.org/                   Maze is Life!
_________________________________________________
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/users

Reply via email to