Làm thế nào để đọc quy tắc đánh máy?


18

Tôi bắt đầu đọc ngày càng nhiều tài liệu nghiên cứu ngôn ngữ. Tôi thấy nó rất thú vị và là một cách tốt để tìm hiểu thêm về lập trình nói chung. Tuy nhiên, thường có một phần mà tôi luôn phải vật lộn với (ví dụ phần ba của phần này ) vì tôi thiếu nền tảng lý thuyết về khoa học máy tính: Loại quy tắc.

Có bất kỳ cuốn sách hay tài nguyên trực tuyến có sẵn để bắt đầu trong lĩnh vực này? Wikipedia là vô cùng mơ hồ và không thực sự giúp đỡ người mới bắt đầu.


1
Bạn đã đọc bài viết liên kết về quy tắc suy luận ?
Raphael

2
TAPL của Benjamin Pierce thực sự tốt.
Gilles 'SO- ngừng trở nên xấu xa'

Câu trả lời:


25

Trong hầu hết các hệ thống loại, quy tắc loại phối hợp với nhau để xác định các phán đoán có dạng:

Γe:τ

Này nói rằng trong bối cảnh biểu thức e có kiểu τ . Γ là một ánh xạ của các biến miễn e với các loại của họ.Γeτ
Γe

Một hệ thống loại sẽ bao gồm một tập hợp các tiên đề và quy tắc (một hệ thống quy tắc suy luận chính thức , như Raphael chỉ ra).

Một tiên đề có dạng

Γe:τ

Này nói rằng bản án giữ (luôn luôn).Γe:τ

Một ví dụ là

x:τx:τ

trong đó giả sử rằng loại biến τ , thì biểu thức x có loạixτx .τ

Các quy tắc suy luận lấy các sự kiện đã được xác định và xây dựng các sự kiện lớn hơn từ chúng. Ví dụ quy tắc suy luận

Γe1:ττΓe2:τΓe1 e2:τ

nói rằng nếu tôi có một nguồn gốc của thực tế và nguồn gốc của sự thật gamma e 2 : τ , sau đó tôi có thể có được một nguồn gốc của thực tế gamma e 1 e 2 : τ ' . Trong trường hợp này, đây là quy tắc để gõ ứng dụng chức năng.Γe1:ττΓe2:τΓe1 e2:τ

Có hai cách đọc quy tắc này:

  • từ trên xuống - đưa ra hai biểu thức (một hàm và một biểu thức khác) và một số ràng buộc về kiểu của chúng, chúng ta có thể xây dựng một biểu thức khác (ứng dụng của hàm cho biểu thức) với kiểu đã cho.
  • từ dưới lên - đưa ra một biểu thức, trong trường hợp này, việc áp dụng hàm cho một biểu thức nào đó, cách thức này được gõ bằng cách nhập hai biểu thức đầu tiên, đảm bảo rằng các kiểu của chúng thỏa mãn một số ràng buộc, cụ thể là kiểu đầu tiên là kiểu hàm và kiểu thứ hai có kiểu đối số của hàm.

Một số quy tắc suy luận cũng thao tác bằng cách thêm các thành phần mới vào nó (xem ed từ dưới lên). Dưới đây là các quy tắc cho λ -abstraction:Γλ

Γx:τe:τΓλx.e:ττ

Các quy tắc suy luận được áp dụng theo quy nạp dựa trên cú pháp của biểu thức được xem xét để tạo thành cây đạo hàm. Ở lá của cây (ở đỉnh) sẽ là tiên đề và các nhánh sẽ được hình thành bằng cách áp dụng các quy tắc suy luận. Ở dưới cùng của cây là biểu thức bạn quan tâm để gõ.

Ví dụ, một dẫn xuất của việc gõ biểu thức λf.λx.f x

Hai cuốn sách rất tốt để tìm hiểu về hệ thống loại là:

f:ττ,x:τf:ττf:ττ,x:τx:τf:ττ,x:τf x:τf:ττλx.f x:τλf.λx.f x:τ

Cả hai cuốn sách đều rất toàn diện, nhưng chúng bắt đầu chậm, xây dựng một nền tảng vững chắc.



5

Trong trang Wikipedia đó được khuyến nghị " Loại hệ thống, Luca Cardelli, Khảo sát tính toán ACM ", đây là bản khảo sát gồm 2 trang có thể giúp bạn hiểu cách đọc quy tắc. Dù sao, làm thế nào để đọc một quy tắc được giải thích hoàn hảo trong trang Wikipedia đó (hoặc thậm chí tốt hơn trong khảo sát 2 trang). Tuy nhiên, để hiểu toàn bộ, bạn cần hiểu hệ thống gõ là gì (bao gồm một số quy tắc), trong đó bài viết Wikipedia " Loại hệ thống " là một khởi đầu tốt (và bạn có một vài cuốn sách trong phần " Tài liệu tham khảo " về điều đó trang nếu bạn muốn đi xa hơn).

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.