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