Tôi đang cố gắng để hiểu được Giải thích tại Monads made difficult và tôi có một thời gian khó khăn để tìm ra định nghĩa Newtype sau:Haskell Newtype với ngoặc
newtype (FComp g f) x = FComp { unCompose :: g (f x) }
instance (Functor b c f, Functor a b g) => Functor a c (FComp g f) where
fmap f (FComp xs) = FComp $ fmap (fmap f) xs
Tôi đã nhìn thấy một nơi nào Giải thích về những gì Newtype nghĩa với một biểu thức trong ngoặc đơn thay cho khai báo kiểu. Do đó, tôi không thể tìm ra định nghĩa của hàm fmap. Tôi cũng không hiểu tại sao accessor unCompose field được định nghĩa nhưng không bao giờ được sử dụng. Tôi cảm thấy như tôi đang thiếu một số ngữ nghĩa cơ bản của newtype.
+1 để thực sự thử nghiệm. – Ingo
Có thể * sẽ * muốn xuất chi tiết triển khai, ít nhất là vô cùng vì chỉ có một thứ mà họ có thể có. Đôi khi chỉ thuận tiện hơn khi sử dụng hàm giải nén hơn so khớp mẫu. –