Tôi hiểu nó là gì, nhưng tôi không thấy nó được sử dụng như thế nào cho các thuật toán hay bất cứ thứ gì. Có lẽ tôi đang thiếu một cái gì đó. Tôi cần ai đó cho tôi một ví dụ về cách sử dụng nó để tôi có thể hiểu nó tốt hơn.
Tôi hiểu nó là gì, nhưng tôi không thấy nó được sử dụng như thế nào cho các thuật toán hay bất cứ thứ gì. Có lẽ tôi đang thiếu một cái gì đó. Tôi cần ai đó cho tôi một ví dụ về cách sử dụng nó để tôi có thể hiểu nó tốt hơn.
Câu trả lời:
Ứng dụng rõ ràng của phép tính lambda là bất kỳ ngôn ngữ lập trình chức năng nào (ví dụ: Lisp, ML, Haskell) và bất kỳ ngôn ngữ nào hỗ trợ các hàm ẩn danh.
Đối với phép tính tổ hợp, có phải có một "ứng dụng trong thế giới thực" không? Ví dụ, máy Turing hầu như không được sử dụng "trong thế giới thực" nhưng chúng tạo thành cơ sở của lý thuyết tính toán. Một tính năng hữu ích của phép tính tổ hợp là chúng là các hệ thống đơn giản hơn, ví dụ, máy Turing. Nếu bạn muốn chứng minh rằng một số hệ thống khác là Turing-Complete, có thể dễ dàng hiển thị cách nó có thể mô phỏng các tổ hợp hơn là hiển thị nó có thể mô phỏng máy Turing.
Tôi thấy SKI hữu ích để hiểu một số tiên đề logic.
Ví dụ, một tiên đề theo kiểu Hilbert về hàm ý (trực giác) là
Lần đầu tiên tôi nhìn thấy những tiên đề này, tôi đã tự hỏi tại sao trên trái đất chúng nên hoạt động. Chắc chắn, thật dễ dàng để kiểm tra rằng họ giữ. Nhưng tại sao những điều này là đủ, tức là tại sao chỉ sử dụng hai định đề này là đủ để chứng minh (thông qua modus ponens) tất cả các tautology liên quan khác? Bí ẩn ... hay là nó?
Chà, hóa ra mọi tautology phải tương ứng với loại thuật ngữ lambda, nhờ vào sự đồng hình của Curry-Howard. Nhưng cho biết thuật ngữ lambda có thể được viết lại tương đương theo thuật ngữ của tổ hợp một mình. Vì vậy, các loại và phải tạo ra, thông qua ứng dụng, các loại tautology. Và quả thực, hai tiên đề trên là các loại chung nhất cho và .S K S K
Hãy xem LINQ của Microsoft (Truy vấn bằng ngôn ngữ). Nó sử dụng rộng rãi và khá trực tiếp tính toán lambda để thao tác và biến đổi cây biểu thức. Có lẽ ví dụ đầy đủ và tinh vi nhất sẽ là Linq2Query (triển khai SQL Server) thực hiện hiệu quả các phép biến đổi phức tạp tách biệt các phần của cây biểu thức có thể được ủy quyền cho máy chủ cơ sở dữ liệu.
Đây không phải là công nghệ đầu tiên cho phép các truy vấn kết hợp dữ liệu từ nhiều nguồn, nhưng nó cũng có thể là công nghệ đầu tiên tự động gỡ rối các phụ thuộc để tận dụng khả năng thao tác hàng loạt của các máy chủ cơ sở dữ liệu. Nó không hoàn hảo (đôi khi bạn phải giúp nó) nhưng nó hoạt động rất tốt và chú ý đến chi tiết bạn sẽ không nhận được từ con người.
Khi bạn làm phải giúp nó ra, hiểu được tính toán sẽ đưa bạn một chặng đường dài hướng tới việc tìm hiểu những gì đang làm phiền nó - vì vậy ngoài việc gì sử dụng là nó? Có câu trả lời của bạn cho Tại sao tôi phải học điều này khi máy móc sẽ làm điều đó cho tôi?