Câu hỏi cơ bản:
Không gì giải tích lambda làm cho chúng ta biết rằng chúng ta không thể làm gì với các thuộc tính chức năng cơ bản và ký hiệu thường học trong đại số trung học cơ sở?
Trước hết, trừu tượng có nghĩa là gì trong bối cảnh tính toán lambda? Sự hiểu biết của tôi về từ trừu tượng là một cái gì đó được tách ra từ máy móc, tóm tắt khái niệm của một khái niệm.
Tuy nhiên, các hàm lambda, bằng cách loại bỏ các tên hàm, ngăn chặn một mức độ trừu tượng nhất định. Ví dụ:
f(x) = x + 2
h(x, y) = x + 5 y
Nhưng ngay cả khi không xác định máy móc của các chức năng này, chúng ta có thể dễ dàng nói về thành phần của chúng. Ví dụ:
1. h(x, y) . f(x) . f(x) . h(x, y) or
2. h . f . f . h
Chúng tôi có thể bao gồm các đối số nếu chúng tôi muốn, hoặc chúng tôi có thể trừu tượng hóa hoàn toàn để đưa ra một cái nhìn tổng quan về những gì đang xảy ra. Và chúng ta có thể nhanh chóng giảm chúng thành một chức năng duy nhất. Chúng ta hãy nhìn vào thành phần 2. Tôi có thể có các lớp chi tiết sinh viên tôi có thể viết tùy thuộc vào sự nhấn mạnh của tôi:
g = h . f . f . h
g(x, y) = h(x, y) . f(x) . f(x) . h(x, y)
g(x, y) = h . f . f . h = x + 10 y + 4
Hãy thực hiện các thao tác trên với phép tính lambda hoặc ít nhất là xác định các hàm. Tôi không chắc điều này đúng, nhưng tôi tin rằng biểu thức thứ nhất và thứ hai tăng thêm 2.
(λuv.u(u(uv)))(λwyx.y(wyx))x
Và để nhân lên 5y.
(λz.y(5z))
Thay vì trừu tượng, điều này dường như đi vào chính bộ máy của những gì nó có nghĩa là thêm, nhân lên, v.v. Sự trừu tượng, trong suy nghĩ của tôi, có nghĩa là cấp độ cao hơn là cấp độ thấp hơn.
Hơn nữa, tôi đang đấu tranh để xem tại sao tính toán lambda thậm chí là một điều. Lợi thế của
(λuv.u(u(uv)))(λwyx.y(wyx))x
kết thúc
h(x) = x + 5 y
hoặc ký hiệu kết hợp
Hxy.x+5y
hoặc thậm chí ký hiệu của Haskell
h x y = x + 5 * y
Một lần nữa, tính toán lambda làm gì cho chúng ta mà chúng ta không thể làm với các thuộc tính hàm kiểu f (x) và ký hiệu mà nhiều người quen thuộc.