Khác biệt giữa bản sửa đổi của “Phép tính lambda”

Bách khoa toàn thư mở Wikipedia
Nội dung được xóa Nội dung được thêm vào
n đã dời Thể loại:Toán học logic; đã thêm Thể loại:Logic toán (đã giải quyết thể loại đổi hướng Thể loại:Logic toán học) dùng HotCat
nKhông có tóm lược sửa đổi
Dòng 1: Dòng 1:
{{sơ khai}}
{{sơ khai}}
Trong [[logic toán học]] và [[khoa học máy tính]], '''phép tính lambda''' ([[tiếng Anh]]:lambda calculus) hay còn được viết là '''λ-calculus''', là một [[hệ thống mang tính hình thức]] được thiết kế để nghiên cứu định nghĩa về [[hàm số]], ứng dụng của hàm số và [[đệ quy]]. Ngôn ngữ này được giới thiệu bởi [[Alonzo Church]] và [[Stephen Cole Kleene]] vào những năm 193x như là một phần trong các [[nghiên cứu cơ bản cho toán học]], đã được phát triển để trở thành một công cụ quan trọng trong việc nghiên cứu các vấn đề về [[lý thuyết tính toán]] và [[lý thuyết đệ quy]], và hình thành nên nền tảng cơ bản của mô hình [[lập trình hàm]].<ref>Henk Barendregt, [http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.26.7908 ''The Impact of the Lambda Calculus in Logic and Computer Science.''] ''The Bulletin of Symbolic Logic'', Volume '''3''', Number 2, tháng 6 năm 1997. </ref>
Trong [[logic toán học]] và [[khoa học máy tính]], '''phép tính lambda''' ([[tiếng Anh]]:lambda calculus) hay còn được viết là '''λ-calculus''', là một [[hệ thống hình thức]] dùng trong việc định nghĩa [[hàm số]], ứng dụng hàm số và [[đệ quy]]. Ngôn ngữ này được giới thiệu bởi [[Alonzo Church]] và [[Stephen Cole Kleene]] vào những năm 193x như là một phần trong các [[nghiên cứu cơ bản cho toán học]], đã được phát triển để trở thành một công cụ quan trọng trong việc nghiên cứu các vấn đề về [[lý thuyết tính toán]] và [[lý thuyết đệ quy]], và hình thành nên nền tảng cơ bản của mô hình [[lập trình hàm]].<ref>Henk Barendregt, [http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.26.7908 ''The Impact of the Lambda Calculus in Logic and Computer Science.''] ''The Bulletin of Symbolic Logic'', Volume '''3''', Number 2, tháng 6 năm 1997. </ref>


Trong giải tích lambda, các hàm là [[first-class entity|first-class entities]]: được truyền vào như các tham số, và trả lại kết quả. Bởi vậy các biểu thức lambda là một dạng của khái niệm thủ tục không có tên mà không tạo ra [[hiệu ứng phụ]]. Giải tích hàm có thể được hiểu như là một ngôn ngữ lập trình lý tưởng và vô cùng nhỏ gọn. Nó có khả năng biểu diễn bất kỳ [[giải thuật]] nào, và nó tạo ra mô hình [[lập trình hàm]]. Các chương trình được tạo thành từ các hàm không có trạng thái và chỉ đơn giản nhận vào dữ liệu và trả lại đầu ra, không tạo ra các hiệu ứng phụ làm thay đổi dữ liệu đầu ra. Các ngôn ngữ lập trình hàm hiện đại, xây dựng dựa trên giải tích lambda gồm có [[Erlang (programming language)|Erlang]], [[Haskell (programming language)|Haskell]], [[Lisp (programming language)|Lisp]], [[ML (programming language)|ML]], và [[Scheme (programming language)|Scheme]], cũng như là các ngôn ngữ gần đây như [[Clojure]], [[F Sharp (programming language)|F#]], [[Nemerle]], và [[Scala (programming language)|Scala]].
Trong giải tích lambda, các hàm là [[first-class entity|first-class entities]]: được truyền vào như các tham số, và trả lại kết quả. Bởi vậy các biểu thức lambda là một dạng của khái niệm thủ tục không có tên mà không tạo ra [[hiệu ứng phụ]]. Giải tích hàm có thể được hiểu như là một ngôn ngữ lập trình lý tưởng và vô cùng nhỏ gọn. Nó có khả năng biểu diễn bất kỳ [[giải thuật]] nào, và nó tạo ra mô hình [[lập trình hàm]]. Các chương trình được tạo thành từ các hàm không có trạng thái và chỉ đơn giản nhận vào dữ liệu và trả lại đầu ra, không tạo ra các hiệu ứng phụ làm thay đổi dữ liệu đầu ra. Các ngôn ngữ lập trình hàm hiện đại, xây dựng dựa trên giải tích lambda gồm có [[Erlang (programming language)|Erlang]], [[Haskell (programming language)|Haskell]], [[Lisp (programming language)|Lisp]], [[ML (programming language)|ML]], và [[Scheme (programming language)|Scheme]], cũng như là các ngôn ngữ gần đây như [[Clojure]], [[F Sharp (programming language)|F#]], [[Nemerle]], và [[Scala (programming language)|Scala]].

Phiên bản lúc 23:22, ngày 9 tháng 12 năm 2010

Trong logic toán họckhoa học máy tính, phép tính lambda (tiếng Anh:lambda calculus) hay còn được viết là λ-calculus, là một hệ thống hình thức dùng trong việc định nghĩa hàm số, ứng dụng hàm số và đệ quy. Ngôn ngữ này được giới thiệu bởi Alonzo ChurchStephen Cole Kleene vào những năm 193x như là một phần trong các nghiên cứu cơ bản cho toán học, đã được phát triển để trở thành một công cụ quan trọng trong việc nghiên cứu các vấn đề về lý thuyết tính toánlý thuyết đệ quy, và hình thành nên nền tảng cơ bản của mô hình lập trình hàm.[1]

Trong giải tích lambda, các hàm là first-class entities: được truyền vào như các tham số, và trả lại kết quả. Bởi vậy các biểu thức lambda là một dạng của khái niệm thủ tục không có tên mà không tạo ra hiệu ứng phụ. Giải tích hàm có thể được hiểu như là một ngôn ngữ lập trình lý tưởng và vô cùng nhỏ gọn. Nó có khả năng biểu diễn bất kỳ giải thuật nào, và nó tạo ra mô hình lập trình hàm. Các chương trình được tạo thành từ các hàm không có trạng thái và chỉ đơn giản nhận vào dữ liệu và trả lại đầu ra, không tạo ra các hiệu ứng phụ làm thay đổi dữ liệu đầu ra. Các ngôn ngữ lập trình hàm hiện đại, xây dựng dựa trên giải tích lambda gồm có Erlang, Haskell, Lisp, ML, và Scheme, cũng như là các ngôn ngữ gần đây như Clojure, F#, Nemerle, và Scala.

Giải tích lambda tiếp tục đóng vai trò quan trọng trong các nghiên cứu cơ bản về toán học, thể hiện trong các thư từ trao đổi của Curry-Howard. Tuy nhiên, giải tích lambda không xác định kiểu (untyped) không tránh khỏi các nghịch lý về lý thuyết tập hợp (xem trong Kleene-Rosser paradox).


Chú thích

  1. ^ Henk Barendregt, The Impact of the Lambda Calculus in Logic and Computer Science. The Bulletin of Symbolic Logic, Volume 3, Number 2, tháng 6 năm 1997.