Vấn đề biểu diễn các biến bị ràng buộc theo cú pháp, và đặc biệt là thay thế tránh bắt, được biết đến và có một số giải pháp: biến được đặt tên với tương đương alpha, chỉ số de Bruijn, không tên cục bộ, bộ danh nghĩa, v.v.
Nhưng dường như có một cách tiếp cận khá rõ ràng khác, mà tôi chưa thấy được sử dụng ở bất cứ đâu. Cụ thể, trong cú pháp cơ bản, chúng ta chỉ có một thuật ngữ "biến", bằng văn bản nói , và sau đó riêng biệt chúng ta đưa ra một hàm ánh xạ mỗi biến thành một chất kết dính trong phạm vi của nó. Vì vậy, một -term nhưλ
sẽ được viết và chức năng sẽ ánh xạ đầu tiên sang thứ nhất và thứ hai đến thứ hai . Vì vậy, nó giống như các chỉ số de Bruijn, chỉ thay vì phải "đếm s" khi bạn rút lui khỏi thuật ngữ để tìm ra chất kết dính tương ứng, bạn chỉ cần đánh giá một hàm. (Nếu biểu diễn điều này như một cấu trúc dữ liệu trong một triển khai, tôi sẽ nghĩ đến việc trang bị cho mỗi đối tượng thuật ngữ biến với một con trỏ / tham chiếu đơn giản đến đối tượng kết nối tương ứng.)∙ λ ∙ λ λ
Rõ ràng điều này là không hợp lý để viết cú pháp trên một trang để con người đọc, nhưng sau đó không phải là chỉ số de Bruijn. Dường như với tôi rằng nó có ý nghĩa hoàn hảo về mặt toán học, và đặc biệt nó làm cho việc thay thế tránh bị bắt rất dễ dàng: chỉ cần bỏ qua thuật ngữ bạn đang thay thế và thực hiện liên kết các hàm ràng buộc. Đúng là nó không có khái niệm "biến tự do", nhưng sau đó (một lần nữa) cũng không có chỉ số de Bruijn thực sự; trong cả hai trường hợp, một thuật ngữ chứa các biến miễn phí được biểu thị một thuật ngữ với một danh sách các ràng buộc "bối cảnh" ở phía trước.
Tôi có thiếu một cái gì đó và có một số lý do đại diện này không hoạt động? Có vấn đề nào làm cho nó tồi tệ hơn nhiều so với những vấn đề khác mà nó không đáng để xem xét? (Vấn đề duy nhất tôi có thể nghĩ đến bây giờ là tập hợp các thuật ngữ (cùng với các chức năng ràng buộc của chúng) không được xác định theo quy nạp, nhưng điều đó dường như không thể vượt qua.) Hoặc có thực sự có nơi nào được sử dụng không?