Hãy nhớ rằng các loại tồn tại và phổ quát là khá khác nhau. Đó là logic xây dựng, không phải logic cổ điển và trong logic xây dựng và không liên quan như trong logic cổ điển.∃∀∃
A B ( x ) B ( x ) x x x x B ( x ) x A → B A B∀x:A.B(x) là loại chương trình nhận một đối tượng loại và trả về một đối tượng loại . Điều quan trọng ở đây là loại phụ thuộc vào và không giống nhau cho tất cả . Nó có thể thay đổi tùy thuộc vào là gì . Đối với một đầu vào chúng tôi có thể xuất một số nguyên. Đối với một số khác, chúng tôi có thể xuất ra một số thực. Đối với một số khác, chúng ta có thể xuất một hàm trên các số thực. Nếu không thay đổi theo sau đó bạn có thể sử dụng ở vị trí đó là loại chức năng từ đến .AB(x)B(x) xxxxB(x)xA→BAB
Một ∨ B Một B Một B ∃ x : Một . B ( x ) B ( x ) x : Một B ( x ) x : Một B x : Một ∃ x : Một . B B x : A A × B∃x:A.B(x) là phiên bản phụ thuộc của phân tách (mang tính xây dựng). Bạn có thể nghĩ mang tính xây dựng phân ly của hai loại và là sự kết hợp rời nhau của và .
là sự kết hợp rời nhau của một bộ sưu tập các loại
được lập chỉ mục bởi . Thực tế là loại van khác nhau tùy thuộc vào giá trị của
làm cho nó trở thành một loại phụ thuộc. So sánh với trường hợp không phụ thuộc vào : . Chúng tôi đang lấy một bản sao giống nhauA∨BABAB∃x:A.B(x)B(x)x:AB(x)x:ABx:A∃x:A.BB cho mỗi . Đây là đẳng cấu với .x:AA×B
Bây giờ bạn có thể hỏi tại sao chúng ta cần các loại sản phẩm và tổng phụ thuộc ? Bởi vì họ cho chúng ta sức mạnh biểu cảm nhiều hơn. Bây giờ chúng ta có thể bỏ qua các loại hoàn toàn và có lập trình lý thuyết / lập trình chức năng loại bỏ. Nhưng điều đó sẽ loại bỏ lợi ích của việc có các loại ở vị trí đầu tiên, ví dụ bạn sẽ không biết liệu tất cả các chương trình sẽ luôn chấm dứt (chuẩn hóa mạnh). Xem Lambda Cube và
loại phụ thuộc . Tôi nghĩ rằng một cách tốt để hiểu rõ các loại phụ thuộc là xem xét các quy tắc giới thiệu và loại bỏ các loại phụ thuộc trong lý thuyết loại của Martin-Lof .
Điểm chính của các loại phụ thuộc là: chúng tôi muốn duy trì bên trong một lý thuyết đánh máy tốt vì nhiều lý do (ví dụ: tránh lỗi, bằng chứng tự động chấm dứt, v.v.). Chúng tôi không muốn đi đến một cái gì đó giống như tính toán lambda chưa được chỉnh sửa, nơi chúng tôi có thể diễn đạt như những gì bạn đã nêu và cách mạnh mẽ hơn. Chúng ta có thể nói rằng các loại phụ thuộc đã được phát minh để cho phép diễn đạt nhiều thứ hơn trong khi vẫn còn trong một lý thuyết loại tốt đẹp.