0 | module Data.Graph.Indexed.Query.Visited
4 | import Data.Linear.Traverse1
5 | import public Data.Buffer.Mutable
13 | parameters (r : MBuffer s n)
17 | mvisit : Fin n -> F1' s
18 | mvisit i = set r i 1
22 | mvisitAll : List (Fin n) -> F1' s
23 | mvisitAll = traverse1_ mvisit
27 | mvisited : Fin n -> F1 s Bool
35 | munvisited : Fin n -> F1 s Bool
47 | visiting : (k : Nat) -> WithMBuffer k a -> a
60 | record Visited (k : Nat) where
71 | visit : Fin k -> Visited k -> Visited k
72 | visit i (V b) = V $
setBit b (finToNat i)
76 | visitAll : List (Fin k) -> Visited k -> Visited k
77 | visitAll vs v = foldl (flip visit) v vs
81 | visited : Fin k -> Visited k -> Bool
82 | visited i (V b) = testBit b (finToNat i)
86 | unvisited : Fin k -> Visited k -> Bool
87 | unvisited i = not . visited i