Hiểu về Endo, Dual và Foldable trong Haskell
Monoid Endo
newtype Endo a = Endo { unwrap :: a -> a }
instance Semigroup (Endo a) where
Endo f <> Endo g = Endo (f . g)
instance Monoid (Endo a) where
mempty = Endo id
Kiểu Endo a bao bọc một hàm có cùng kiểu đầu vào và đầu ra (a → a). Phép kết hợp của Endo chính là phép hợp thành hàm. Vì hợp thành hàm luôn thỏa tính kết hợp và ...
Đăng vào ngày 24 tháng 6 lúc 08:01