Subtyping cho biết một biểu thức của một loại chúng ta có thể cung cấp cho nó một loại khác. Chúng tôi nói cái trước là một kiểu con của cái sau và mối quan hệ phụ này tạo ra nhiều mối quan hệ khác. Trong các biểu tượng,
Gamma ⊢ E: SS< : TGamma ⊢ E: T
Điều quan trọng ở đây (và lý do tôi đã xem xét nó) là cùng một biểu thức được đưa ra hai loại khác nhau. Trong các ngôn ngữ parametrically đa hình với ngầm loại instantiation chúng tôi có mối quan hệ sau subtyping:
cho tất cả các loại T . Nếu khởi tạo kiểu rõ ràng như trong Hệ thống F, mối quan hệ phụ này không giữ được.( ∀ a . Τ) < : Τ[ T/ α]T
{ ℓ1: Một , ℓ2: B } < : { ℓ2: B , ℓ1: A }{ ℓ1: Một , ℓ2: B } ≅{ ℓ2: B , ℓ1: A }S≅T⟺S< : T∧ T< : S{ ℓ1: Một , ℓ2: B } = { ℓ2: B , ℓ1: A }T< : T
Thông thường khi chúng ta nói về một ngôn ngữ với phân nhóm, chúng ta có nghĩa là một ngôn ngữ có mối quan hệ phân nhóm không tầm thường đối với các loại mặt đất , tức là các loại không có biến tự do (tất nhiên, có thể và sẽ tạo ra các mối quan hệ phụ cho các loại không phải mặt đất). Vì vậy, một hệ thống có tính đa hình hàng như Roy không phải là một ngôn ngữ có phân nhóm theo nghĩa này, mặc dù nó có mối quan hệ phụ không tầm thường đến từ bất kỳ ngôn ngữ đa hình tham số ngay lập tức nào. Mặt khác, phân nhóm cấu trúc, nêu rõ các mối quan hệ phân nhóm không tầm thường cho các loại mặt đất.
( ≅)ở trên, phân nhóm cấu trúc ngụ ý các loại hàng nhưng không phải ngược lại. Đa hình tham số là trực giao (theo nghĩa bạn có thể có hoặc không có nó, chắc chắn có tương tác) với các loại hàng hoặc phân nhóm cấu trúc. Một hệ thống với phân nhóm cấu trúc + đa hình tham số bao gồm loại hàng + đa hình tham số (giả sử một số loại "liên kết bản ghi") theo nghĩa là mọi thuật ngữ trong sau có thể được gõ cùng loại trước đây. Cái trước chỉ có thể gõ với các loại bổ sung là tốt. Sử dụng ví dụ của Brian, trong một hệ thống với subtyping cấu trúc và tính đa hình tham số answer
sẽ có các loại tương tự như trong các phiên bản hàng đánh máy, nhưng nó cũng sẽ có loại phiên bản subtyping của cũng .
ρ{ c : Number }
thông tin: đi từ một kiểu con đến một siêu kiểu mất thông tin (loại). Đây thường có thể là những gì bạn muốn: có một loại phổ biến bạn quan tâm và mọi thứ khác là các chi tiết không liên quan. Sự thiên vị của tôi là hướng tới việc duy trì càng nhiều thông tin loại càng tốt và chỉ loại bỏ nó một cách rõ ràng. Nhược điểm của cách tiếp cận của phân nhóm thường được chứng minh bằng các chương trình đúng loại nhưng chỉ vì các loại được đẩy sang loại "hàng đầu" không có thông tin, ví dụ như bản ghi trống. Lặp lại, đa hình tham số (nói chung) bảo tồn thông tin loại, phân nhóm cố ý làm mất nó.