Cái tên kiểu trống rỗng có lẽ khó hiểu. Điều này có nghĩa là, như bạn tự nói, loại không chứa giá trị . Các sản phẩm trống rỗng không đề cập đến bất kỳ giá trị riêng lẻ nào của loại này, nó đề cập đến toàn bộ loại, được coi là một tập hợp các giá trị có thể. Vì vậy, điều này không nói lên một điều gì đó giống như một hàm trả void
về không trả về thông tin nào, nhưng đó không tồn tại giá trị của loại ⊥
.
Điều này có nghĩa là một hàm có loại kết quả không bao giờ⊥
có thể kết thúc. Nếu nó chấm dứt, nếu phải trả về giá trị , nhưng, tốt, giá trị đó không tồn tại.⊥
Điều đó cũng có nghĩa là, thậm chí không thể thảo luận về việc một giá trị của loại trống sẽ chứa bao nhiêu thông tin, bởi vì không có giá trị đó. (Hoặc nếu bạn sẽ, một tuyên bố vô nghĩa như bất kỳ giá trị nào của loại trống chứa chính xác 35093658 bit thông tin thì hoàn toàn đúng.) Thật hữu ích (mặc dù không thực sự chính xác) khi nghĩ rằng các ⊥
giá trị chứa một lượng thông tin vô hạn .
Trong khi đó, một hàm C với kiểu trả về của Wap void
rõ ràng có thể trả về, nhưng không cung cấp cho bạn bất kỳ thông tin nào trong giá trị trả về của nó. Chà, đó chính xác là những gì đặc trưng cho một loại đơn vị: các giá trị của nó không chứa bất kỳ thông tin nào, bởi vì chỉ có một giá trị như vậy (do đó bạn luôn có thể nói giá trị trả về sẽ là gì, ngay cả khi không cần gọi hàm).
Để trích dẫn Conor McBride (phiên âm sang C):
void
có nghĩa là "Chán". Nó có nghĩa là loại nhàm chán chứa một thứ, cũng nhàm chán. Không có gì thú vị để đạt được bằng cách so sánh một yếu tố của loại nhàm chán với loại khác, bởi vì không có gì để tìm hiểu về một yếu tố của loại nhàm chán bằng cách đưa ra bất kỳ sự chú ý nào của bạn.
Nó rất khác với loại trống [...]. Loại trống rất thú vị, bởi vì nếu ai đó từng cho bạn một giá trị thuộc về nó, bạn biết rằng bạn đã chết và ở trên Thiên đường và bất cứ điều gì bạn muốn là của bạn.