module Misc
where
-import Data.List (intersect)
+import qualified Data.Vector as V (Vector, elem, empty, filter)
import Test.Framework (Test, testGroup)
import Test.Framework.Providers.HUnit (testCase)
import Test.Framework.Providers.QuickCheck2 (testProperty)
other_elements = tail xs
--- | Returns 'True' if the lists xs and ys are disjoint, 'False'
+-- | Returns 'True' if the vectors xs and ys are disjoint, 'False'
-- otherwise.
--
-- Examples:
--
--- >>> disjoint [1,2,3] [4,5,6]
+-- >>> let xs = Data.Vector.fromList [1,2,3]
+-- >>> let ys = Data.Vector.fromList [4,5,6]
+-- >>> disjoint xs ys
-- True
--
--- >>> disjoint [1,2,3] [3,4,5]
+-- >>> let ys = Data.Vector.fromList [3,4,5]
+-- >>> disjoint xs ys
-- False
--
-disjoint :: (Eq a) => [a] -> [a] -> Bool
+disjoint :: (Eq a) => V.Vector a -> V.Vector a -> Bool
disjoint xs ys =
- intersect xs ys == []
-
-
+ intersect xs ys == V.empty
+ where
+ intersect :: (Eq a) => V.Vector a -> V.Vector a -> V.Vector a
+ intersect ws zs =
+ V.filter (`V.elem` zs) ws
prop_factorial_greater :: Int -> Property
prop_factorial_greater n =