make RingMap an instance of Traversable
- some examples tested out by hand, but not thorough test case or even QuickCheck coverage
This commit is contained in:
parent
048a6ce391
commit
6aebd982f8
|
@ -47,6 +47,13 @@ instance (Bounded k, Ord k) => Foldable (RingMap k) where
|
|||
traversingFL acc (ProxyEntry _ Nothing) = acc
|
||||
traversingFL acc (ProxyEntry _ (Just entry)) = traversingFL acc entry
|
||||
|
||||
instance (Bounded k, Ord k) => Traversable (RingMap k) where
|
||||
traverse f = fmap RingMap . traverse traversingF . getRingMap
|
||||
where
|
||||
traversingF (KeyEntry entry) = KeyEntry <$> f entry
|
||||
traversingF (ProxyEntry to Nothing) = pure $ ProxyEntry to Nothing
|
||||
traversingF (ProxyEntry to (Just entry)) = ProxyEntry to . Just <$> traversingF entry
|
||||
|
||||
|
||||
-- | entry of a 'RingMap' that holds a value and can also
|
||||
-- wrap around the lookup direction at the edges of the name space.
|
||||
|
|
Loading…
Reference in a new issue