Eq (, , Eq, , ). Eq . Ord Hashable.
, , , , trie, , .
generic-trie. , Array , , , .
Eq
- :
type Set a = [a]
member a [] = False
member (x:xs) | a == x = True
| otherwise = member a xs
insert a xs | member a xs = xs
| otherwise = a:xs
( ), , , - .
, - :
data Set a = Node a (Set a) (Set a) | Tip
, , , node , . Eq, . Ord ( Hashable), .
. ( ...), , , trie, , .
Ord
, Ord , . , . newtype:
newtype WrappedThing = Wrap Thing
instance Ord WrappedThing where
....
newtype ThingSet = ThingSet (Set WrappedThing)
insertThing thing (ThingSet s) = ThingSet (insert (Wrap thing) s)
memberThing thing (ThingSet s) = member (WrapThing) s
...
, , " ", Ord, newtype ; , ( Ord).