module Yhc.Core.Internal.General where

import qualified Data.Set as Set


ordNub :: Ord a => [a] -> [a]
ordNub xs = f Set.empty xs
    where
        f set (x:xs) | x `Set.member` set = f set xs
                     | otherwise          = x : f (Set.insert x set) xs
        f set [] = []

disjoint :: Eq a => [a] -> [a] -> Bool
disjoint x y = not $ any (`elem` x) y