구문으로 바인딩 된 변수를 표현하는 문제, 특히 캡처를 피하는 대체 문제는 잘 알려져 있으며 여러 가지 솔루션이 있습니다.
그러나 그럼에도 불구하고 다른 명백한 접근 방식이있는 것 같습니다. 즉, 기본 구문에서 우리는 하나의 "가변"이라는 용어를 라고 쓰고 , 개별적으로 각 변수를 그 범위에 속하는 바인더에 매핑하는 함수를 제공합니다. 따라서 λ 용어는
로 작성 됩니다. ( λ . ∙ ∙ ) 및 제 1 맵핑 함수 것이다 ∙ 제에 λ 와 제 ∙ 제에 λ를 . 따라서 그것은 Bruijn 지수와 비슷 합니다. 해당 바인더를 찾기 위해 용어에서 " λ s"를 계산하는 대신 함수를 평가하면됩니다. (구현에서 이것을 데이터 구조로 표현한다면, 각 변수 용어 객체에 해당 바인더 용어 객체에 대한 간단한 포인터 / 참조를 장비한다고 생각합니다.)
분명히 이것은 사람이 읽을 수 있도록 페이지에 구문을 작성하는 데 합리적이지 않지만 브루 인 지수는 아닙니다. 그것은 수학적으로 완벽하게 이해되는 것 같습니다. 특히 캡처 피하기 대체를 매우 쉽게 만듭니다. 대체하는 용어를 바꾸고 바인딩 함수의 결합을 취하십시오. 그것이 "자유 변수"라는 개념을 가지고 있지 않다는 것이 사실이지만, (다시) de de Bruijn 지수도 실제로는 아닙니다. 두 경우 모두 자유 변수를 포함하는 용어는 앞에 "컨텍스트"바인더 목록이있는 용어입니다.
뭔가 빠졌는데이 표현이 작동하지 않는 이유가 있습니까? 고려할 가치가없는 다른 것보다 훨씬 더 나쁜 문제가 있습니까? (내가 지금 생각할 수있는 유일한 문제는 (결합 함수와 함께) 용어 집합이 귀납적으로 정의되지는 않지만 극복 할 수없는 것처럼 보이지 않는다는 것입니다. 또는 실제로 사용 된 장소가 있습니까?