로컬 함수, 일급 함수, 블록 스코프가 한데 어우러지면 다음과 같이 재미난 상황이 연출된다.
fun returnFunction() {
var outside = "outside";
fun inner() {
print outside;
}
return inner;
}
var fn = returnFunction();
fn();
inner()는 주변 함수8에 선언된 로컬 변수에 액세스한다. 이런 일이 가능할까? 이미 리스프(Lisp)에 있는 이 기능을 많은 언어가 차용했기 때문에 답이 “예”라는 것은 다들 알고 있을 것이다.