1
0
forked from GitHub/gf-core

Extract the previous optimization to its own function

This commit is contained in:
Andreas Källberg
2022-10-02 21:57:11 +02:00
parent fef7b80d8e
commit a58c6d49d4

View File

@@ -129,9 +129,17 @@ isInherited :: MInclude -> Ident -> Bool
isInherited c =
case c of
MIAll -> const True
MIOnly is -> let is' = Set.fromList is in (`Set.member` is')
MIExcept is -> let is' = Set.fromList is in (`Set.notMember` is')
MIOnly is -> elemOrd is
MIExcept is -> not . elemOrd is
-- | Faster version of `elem`, using a `Set`.
-- Make sure you give this the first argument _outside_ of the inner loop
--
-- Example:
-- > myIntersection xs ys = filter (elemOrd xs) ys
elemOrd :: Ord a => [a] -> a -> Bool
elemOrd list = (`Set.member` set)
where set = Set.fromList list
inheritAll :: ModuleName -> (ModuleName,MInclude)
inheritAll i = (i,MIAll)