on f9de430 help sign in
elk/compiler/src/Data/Map/Utils.hs
43 lines 790 B history raw
1module Data.Map.Utils
2 ( fromKeys
3 , fromKeysA
4 , fromValues
5 , any
6 )
7 where
10import Prelude hiding (any)
11import qualified Data.Map as Map
12import Data.Map.Internal (Map(..))
16-- FROM KEYS
19fromKeys :: (Ord k) => (k -> v) -> [k] -> Map.Map k v
20fromKeys toValue keys =
21 Map.fromList $ map (\k -> (k, toValue k)) keys
24fromKeysA :: (Applicative f, Ord k) => (k -> f v) -> [k] -> f (Map.Map k v)
25fromKeysA toValue keys =
26 Map.fromList <$> traverse (\k -> (,) k <$> toValue k) keys
29fromValues :: (Ord k) => (v -> k) -> [v] -> Map.Map k v
30fromValues toKey values =
31 Map.fromList $ map (\v -> (toKey v, v)) values
35-- ANY
38{-# INLINE any #-}
39any :: (v -> Bool) -> Map.Map k v -> Bool
40any isGood = go
41 where
42 go Tip = False
43 go (Bin _ _ v l r) = isGood v || go l || go r