(set not-embedded (&))
(set embedded (& (& @xxx)))

(compile 100 global-contour not-embedded)
(compile 100 global-contour embedded)
(compile @foo global-contour not-embedded)
(compile @foo global-contour embedded)
(compile (& @lambda @x @x) global-contour not-embedded)
(compile (& @lambda @x @x) global-contour embedded)
(compile (& @lambda (& @x) @x) global-contour embedded)
(compile (& @if 1 2 3) global-contour not-embedded)
(compile (& @if 1 2 3) global-contour embedded)
(compile (& @if (& @if 1 2 3) 4 5) global-contour embedded)
(compile (& @f @g) global-contour not-embedded)
(compile (& @f @g) global-contour embedded)
(compile (& @f 1 2) global-contour embedded)
(compile (& @f (& @bar 4)) global-contour not-embedded)
(compile (& @f @. @g) global-contour embedded)
(compile (& (& @bar 4) 1000) global-contour embedded)
(compile (& @@scons 1 2 3) global-contour not-embedded)
(compile (& @@scons 1 2 3) global-contour embedded)
(compile (& @@scons 1 (& @f @g) 3) global-contour not-embedded)
(compile (& @@scons 1 (& @f @g) 3) global-contour embedded)


(set program-1
  (& @lambda (& @n)
    (& @if
       (& @= @n 0)
       1
       (& @* @n
          (& @fact
             (& @- @n 1))))))

(compile program-1 global-contour not-embedded)

(set program-2
  (& @lambda (& @lambda @if)
     (& @lambda @x (& @if $t 1 2))))

(compile program-2 global-contour not-embedded)