Nó phụ thuộc vào phần nào trong câu hỏi của bạn mà bạn nhấn mạnh. Nếu nó đặc biệt là thuộc tính ẩn danh cho các hàm ẩn danh, thì thực sự câu trả lời duy nhất là chúng là các giá trị không bị ràng buộc . Nếu bạn đang nói về các hàm nói chung, các hàm ẩn danh có lẽ là biểu hiện rõ ràng nhất của việc sử dụng phép tính lambda trong một cài đặt chức năng, cho các ngôn ngữ ứng dụng .
Trong thực tế, từ quan điểm tính toán lambda, biểu thức lambda là cấu trúc cú pháp được sử dụng để tạo ra các ràng buộc. Nhớ lại ký hiệu được sử dụng trong phép tính lambda:
λ f. λ x . fx
fxfx
Một ngôn ngữ thường cung cấp các cách, chẳng hạn như let
(ML như ngôn ngữ, lược đồ) hoặc define
(lược đồ) để tạo các ràng buộc có thể sử dụng ở cấp cao nhất (hoặc trong cấu trúc cú pháp phức tạp hơn các hàm, như mô-đun hoặc đối tượng), nhưng là công cụ cần thiết duy nhất cho ràng buộc là lambda ở cấp thấp hơn.
Nếu bạn nhìn vào các ngôn ngữ như sơ đồ hoặc phương ngữ không thể thiếu, chính nguồn tài trợ của chúng là lambda tính toán, và nhiều hình thức đặc biệt là lambdas bọc đường thực sự.
Đối với các ngôn ngữ nối , câu chuyện hơi khác nhau. Lambdas là không cần thiết, và thực sự phản tác dụng. Điểm xác định lambdas ẩn danh là gì, khi mọi thứ là một chức năng ?
Có một sự đối ngẫu nào đó giữa hai loại xoài này. Cái sau tập trung vào sự kết hợp chức năng tự do điểm và do đó cố gắng biểu diễn mọi thứ dưới dạng hàm, trong khi cái trước hoạt động trên một phép tính phức tạp hơn và nỗ lực để có các hàm như các giá trị hạng nhất, giống như bất kỳ giá trị nào khác của ngôn ngữ. Về mặt này, người ta có thể xem lambdas là kết quả của nỗ lực đó.
Một số gợi ý về chủ đề được giới thiệu (kém) trong câu trả lời này: