Vì vậy, chúng ta hãy nói rằng tôi đã viết một số type-level program trong Haskell: type family NAryFn (n::Nat) (dom::*) (cod::*) :: *
type instance NAryFn Ze dom cod = cod
type instance NAryFn (Su n
Tôi thấy rằng tôi thực sự thích kết hợp GADT với kiểu dữ liệu, vì nó mang lại cho tôi sự an toàn hơn trước đây (đối với hầu hết các công dụng, gần như tốt như Coq, Agda và cộng sự). Đáng buồn thay, vi