Это было бы при динамическом связывании c, но Схема имеет лексическую область видимости.
Но на самом деле это не так. «Свободный» или «связанный» исходит из лямбда-исчисления. what-kind-of-var?
- это переменная верхнего уровня , именующая это лямбда-выражение,
(define what-kind-of-var?
(lambda (guess x) ;; this
(< (abs (- (square guess) x))
0.001)))
, но в лямбда-исчислении выражения не могут быть названы. Единственный способ назвать его рекурсивно в лямбда-исчислении - это использовать Y комбинатор:
((Y (lambda (what-kind-of-var?) ;; outer
(lambda (guess x) ;; inner
(if (< (abs (- (square guess) x))
0.001)
guess
(what-kind-of-var? (+ 1 guess) x)))))
4 25)
, и теперь, конечно, what-kind-of-var?
связан внутри этой новой лямбды выражение под Y
. Она свободна во вложенной внутренней лямбде, но связана во внешней.