11

Across ngôn ngữ lập trình, tôi đã gặp phải tương tự composite types với tên gọi khác nhau:"Loại từ vựng" là gì và có bao nhiêu loại từ vựng?

  1. Optional/Maybe
  2. Any
  3. Variant/Sum
  4. Record/Product

Người ta thường sử dụng thuật ngữ loại từ vựng ,
nhưng tôi chưa bao giờ thấy định nghĩa về những gì tạo nên một loại "từ vựng".

Cụm từ này có định nghĩa không?
Loại lý thuyết và ngôn ngữ lập trình khác phải nói gì về các loại từ vựng?

Mọi thứ ở trên loại từ vựng phải không? Có nhiều hơn không?

+8

Bạn có thể cung cấp bất kỳ liên kết/trích dẫn nào cho cụm từ "loại từ vựng" được sử dụng trong ngữ cảnh không? Tôi chưa bao giờ nhìn thấy nó trước đây và tôi tò mò nếu nó sẽ giúp cung cấp thêm nền tảng cho một câu trả lời. Đây chủ yếu là [loại dữ liệu đại số] (https://en.wikipedia.org/wiki/Algebraic_data_type). –

+0

Như Jon đã nói, bạn đã thấy loại từ vựng được sử dụng liên quan đến những thuật ngữ này ở đâu? Không phải cái gì tôi đã đi qua, ngay cả sau khi làm một tìm kiếm internet cho nó – Dijkgraaf

+0

cho chúng ta thấy các tài liệu tham khảo nhưng tôi nghĩ rằng nó có nghĩa là có loại khác nhau của từ vựng để đề cập đến một loại cụ thể! –

Trả lời

3

Sự hiểu biết của tôi về từ vựng liên quan đến lập trình và loại từ vựng nói chung là một cái gì đó cung cấp cho các thuộc tính đối tượng nhất định với ý nghĩa được xác định rõ.

Dưới đây là một số ví dụ trong Haskell:

Cân nhắc Optional/Maybe loại và một hàm thuần túy mà mất HTTP trả lời của một máy chủ web và chiết xuất đang trả lời của.

getCode :: String -> Int 

Bây giờ giả sử khi chúng tôi chạy chức năng này, chúng tôi không biết liệu phản hồi có thành công hay không - mã có thể không có mặt. Làm thế nào để chúng tôi đại diện cho trường hợp khi mã bị thiếu? Chúng tôi có thể gán một số giá trị nhân tạo -1 hoặc 0 hoặc chúng ta có thể thay đổi toàn bộ loại chức năng như sau:

getCode :: String -> Maybe Int 

Ngoài Maybe hình thức một Monad, Functor, Applicative, Foldable và một loạt các typeclasses khác trong Haskell. Mỗi typeclass bổ sung thêm khả năng để thao tác giá trị trong câu hỏi trong khi tôn trọng sự hiện diện/vắng mặt của nó.

Product/Sum loại trong Haskell được biểu diễn dưới dạng cặp và Either a b. Một lần nữa - xác định một cái gì đó thông qua Product hoặc Sum thêm một nghĩa được xác định rõ ràng Product a b - cả hai giá trị phải có mặt, Sum a b - một giá trị phải có mặt và thêm một loạt các luật miễn phí.

+0

Tôi nghĩ rằng câu trả lời này là thiếu một chút câu hỏi, đó là 'cái gì làm cho một loại "từ vựng"? 'Trái ngược với' những loại này làm gì? '. – Alec

+0

'Định nghĩa rõ ràng là'.Đối với những người quen thuộc với thuật ngữ toán học/lập trình "Hoạt động này trong giao hoán và liên kết" cho biết nhiều về hoạt động như "Loại' Điều' là 'Có thể Stuff'". – user8242965

Các vấn đề liên quan