Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- module OverlapsFoo where
- import Data.Set (Set)
- import qualified Data.Set as S
- newtype Foo a = Foo a
- deriving (Eq, Ord, Show)
- mkFooSet :: Ord a => [a] -> Set (Foo a)
- mkFooSet = S.fromList . fmap Foo
- --
- {-# LANGUAGE FlexibleInstances #-}
- module OverlapsBar where
- import Data.Monoid
- import Data.Set (Set)
- import qualified Data.Set as S
- import OverlapsFoo
- data Bar = Bar1 | Bar2 | Bar3
- deriving (Eq, Ord, Show)
- instance {-# Overlaps #-} Ord (Foo Bar) where
- compare (Foo x) (Foo y) = compare y x
- bar :: Set (Foo Bar)
- bar = S.fromList [Foo Bar1, Foo Bar2, Foo Bar3] <> mkFooSet [Bar1, Bar2, Bar3]
- -- fromList [Foo Bar3,Foo Bar1,Foo Bar2,Foo Bar3,Foo Bar1]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement