Tôi gặp phải sự cố lạ khi xác định ràng buộc mặc định. Nếu một ràng buộc là đơn vị, cá thể mặc định không được chọn. Trong tất cả các trường hợp khác, nó hoạt động như mong đợi.Các loại ràng buộc mặc định được bỏ qua
{-# LANGUAGE TypeFamilies, ConstraintKinds #-}
import qualified GHC.Exts as E
class Expression a where
type Constr a v :: E.Constraint
--type Constr a v =() -- with this line compilation fails
--type Constr a v = v ~ v -- compiles
wrap :: Constr a v => a -> Maybe v
instance Expression() where
wrap() = Just undefined
main = print (wrap() :: Maybe Int)
Ai đó có thể làm rõ nguyên nhân của hành vi đánh máy?
Khi đoán, vì không có kết nối nào giữa loại 'v' và ánh xạ kiểu liên kết nào sẽ giải quyết? – ivanm
Có thể có liên quan: [Ràng buộcNhập và ràng buộc rỗng được liên kết mặc định] (http://comments.gmane.org/gmane.comp.lang.haskell.glasgow.user/21058) – hammar