Lambda The Ultimate đề cập đến ý tưởng rằng lambdas của lambda-compus có thể thực hiện hiệu quả mọi khái niệm dựng sẵn trong mọi ngôn ngữ lập trình, quá khứ, hiện tại và tương lai. Các lớp, Mô-đun, Gói, Đối tượng, Phương thức, Dòng điều khiển, Cấu trúc dữ liệu, Macro, Continuations, Coroutines, Generators, List Comp Hiểu, Streams, v.v.
Khi điều đó xảy ra, bản chất tối thượng đó bao gồm việc đứng cho một Hàm ẩn danh. Nhưng lambdas không, ở cốt lõi của chúng, chỉ giới hạn ở các chức năng ẩn danh. Họ được dạy theo cách đó, nhưng bản chất của lambda đi sâu hơn nhiều so với các hàm toán học không có tên. Nói cách khác, tôi có vấn đề với:
Tôi hiểu lambda có nghĩa là gì, ý tưởng về một chức năng ẩn danh vừa đơn giản vừa mạnh mẽ, nhưng tôi không hiểu "cái tối thượng" nghĩa là gì trong bối cảnh này.
Như một vấn đề thực tế, việc sử dụng lambdas như là trừu tượng cú pháp ('macro'), không phải là gọi theo giá trị / ứng dụng (mà các chức năng toán học), là rất quan trọng để mua vào ý tưởng rằng lambdas thực sự có thể phục vụ như là cốt lõi của mọi hệ thống xử lý ngôn ngữ lập trình.
Đối với lý thuyết: Có một mối liên hệ thú vị với nghịch lý của Bertrand Russell và Tiên đề của sự hiểu biết (và mở rộng) trong lý thuyết tập ngây thơ. Lambda là để thực hiện chức năng mà ký hiệu của trình xây dựng là đối với các tập hợp: lambdas là ký hiệu của trình xây dựng hàm. Có một sự khác biệt quan trọng, thường bị bỏ qua, giữa (lambda (x) (* xx)) và những gì đánh giá (hàm bình phương). Nếu người ta không phân biệt được giữa hai loại nói chung, nghĩa là, giữa ký hiệu và ký hiệu (một lỗi mà cả Church và Frege đều mắc phải) thì người ta sẽ gặp phải những nghịch lý. Đối với các bộ và Frege, đó là Thợ cắt tóc Seville của Bertrand Russell minh họa lỗi; đối với các chức năng và Giáo hội, đó là Dừng hoạt động của Alan Turing.
Lưu ý rằng những nghịch lý là tốt, thực tế, mọi thứ. Chúng tôi muốn EVAL có thể biểu lộ được và chúng tôi muốn lambdas có ý nghĩa nhiều hơn là các chức năng. Giả sử ngược lại dẫn đến mâu thuẫn là kết quả mong muốn; nó phục vụ như một bài kiểm tra vệ sinh tốt đẹp: lambdas khó có thể là tối thượng nếu chúng chỉ thể hiện các chức năng đơn thuần.
Vợt (trước đây là PLT Scheme) tiếp tục truy tố ý tưởng rằng các ngôn ngữ lập trình thực tế thực sự có thể được xây dựng, từ đầu, trên 'chỉ lambda'.
Kernel , bởi Shutt, lập luận rằng lambda không thực sự là sự trừu tượng hóa cuối cùng. Ông lập luận rằng có một khái niệm còn nguyên thủy hơn (đối với tiếng Hy Lạp, được đặt tên là vau) được Sussman gọi là FEXPR.
Felleisin và công ty (đối với Vợt) nhận được nhiều sức mạnh của Shutt vau bằng cách sử dụng khái niệm pha , hoặc kim loại, nghĩa là chạy mã nguồn qua nhiều giai đoạn dịch (như với tiền xử lý C, nhưng sử dụng cùng một ngôn ngữ ở mỗi giai đoạn 'Bước' và 'bước' không thực sự hoàn toàn khác biệt về thời gian). (Vì vậy, họ cho rằng một lambda trong một giai đoạn cao hơn xấp xỉ một vầu cũng đủ). Trong thực tế, họ cho rằng giai đoạn là tốt hơn so với FEXPRs, chính xác vì nhiều hạn chế; Nói tóm lại, "FEXPRs quá mạnh" (xem tác phẩm của Wand, mà Shutt lập luận chống lại).
3-Lisp của Brian Smith, "Sự phản ánh thủ tục trong các ngôn ngữ lập trình", cố gắng cải cách nghiêm ngặt lý thuyết về các ngôn ngữ giống như LISP dọc theo các ký hiệu phân biệt rõ ràng (ký hiệu / ngôn ngữ / chương trình) từ các ký hiệu (sự vật / giới thiệu / giá trị / kết quả ). http://dspace.mit.edu/handle/1721.1/15961
"Lý thuyết về FEXPRs là tầm thường" của Mitchell Wand gửi thêm đinh vào quan tài (tạm thời?) Mà Kent Pittman đã rèn cho FEXPR (người, giống như Felleisen, lập luận chống lại FEXPRs vì quá trình biên dịch quá khó).
Paul Graham lập luận với sức mạnh và độ dài trong "On Lisp" rằng sức mạnh thực sự là lambdas như là biến thế của cú pháp (macro), chứ không phải là biến đổi của các giá trị (hàm toán học). Sự phát triển của Plotkin về tính toán lambda ứng dụng có thể được coi là hơi tương phản, bởi vì Plotkin giới hạn tính toán của Church đối với tập hợp con theo giá trị / ứng dụng của nó. Tất nhiên, xử lý phần áp dụng một cách hiệu quả là rất quan trọng, vì vậy điều quan trọng là phát triển lý thuyết chuyên ngành cho việc sử dụng lambda. (Plotkin và Graham không tranh cãi với nhau.)
Trên thực tế, nói chung, khái niệm Lambda là Ultimate chỉ là một bước ngoặt như vậy đối với cuộc tranh luận muôn thuở giữa hiệu quả và tính biểu cảm; đó là vị trí mà lambda là công cụ tối ưu cho tính biểu cảm, và, nếu được nghiên cứu đủ, cuối cùng sẽ chứng minh là công cụ tối ưu cho hiệu quả. Nói cách khác, chúng ta có thể, nếu chúng ta muốn, nhìn thấy tương lai của các ngôn ngữ lập trình là không có gì khác hơn là nghiên cứu về cách thực hiện hiệu quả tất cả các đoạn có liên quan thực tế của phép tính lambda.
"700 ngôn ngữ lập trình tiếp theo" của Landin, http://www.cs.cmu.edu/~crary/819-f09/Landin66.pdf , là một tài liệu tham khảo có thể truy cập góp phần vào sự phát triển của khái niệm đó rằng Lambda là Ultimate.