0 | module Libraries.Data.NameMap.Traversable
 1 |
 2 | import Core.Core
 3 | import Core.Name
 4 | import Libraries.Data.NameMap
 5 |
 6 | treeTraverse : (Name -> a -> Core b) -> Tree h a -> Core (Tree h b)
 7 | treeTraverse f (Leaf k v) = Leaf k <$> f k v
 8 | treeTraverse f (Branch2 l k r) =
 9 |     (\l', r' => Branch2 l' k r')
10 |     <$> treeTraverse f l
11 |     <*> treeTraverse f r
12 | treeTraverse f (Branch3 l k1 m k2 r) =
13 |     (\l', m', r' => Branch3 l' k1 m' k2 r')
14 |     <$> treeTraverse f l
15 |     <*> treeTraverse f m
16 |     <*> treeTraverse f r
17 |
18 | export
19 | traverseNameMap : (Name -> a -> Core b) -> NameMap a -> Core (NameMap b)
20 | traverseNameMap f Empty = pure Empty
21 | traverseNameMap f (M h t) = M h <$> treeTraverse f t
22 |