13
data Tree t = Empty | Node t (Tree t) (Tree t)
Chúng ta có thể tạo functor dụ và sử dụngCây Functor và có thể gập lại nhưng với các nút. Có sự tổng quát nào không?
fmap :: (t -> a) -> Tree t -> Tree a
Nhưng nếu thay vì (t -> a) Tôi muốn (Tree t -> a) vì vậy tôi có thể có quyền truy cập vào một tổng thể (Node t) không chỉ t
treeMap :: (Tree t -> a) -> Tree t -> Tree a
treeMap f Empty = Empty
treeMap f [email protected](Node _ l r) = Node (f n) (treeMap f l) (treeMap f r)
Cùng với lần
treeFold :: (Tree t -> a -> a) -> a -> Tree t -> a
có tổng quát hơn func tions như thế này?
map :: (f t -> a) -> f t -> f a
fold :: (f t -> a -> a) -> a -> f t -> a