on de0bcbd help sign in
Idris-dev/lib/Data/SortedSet.idr
26 lines 801 B history raw
1module Data.SortedSet
3import Prelude
4import Data.SortedMap
6-- TODO: add intersection, union, difference
8data SortedSet k = SetWrapper (Data.SortedMap.SortedMap k ())
10empty : SortedSet k
11empty = SetWrapper Data.SortedMap.empty
13insert : Ord k => k -> SortedSet k -> SortedSet k
14insert k (SetWrapper m) = SetWrapper (Data.SortedMap.insert k () m)
16delete : Ord k => k -> SortedSet k -> SortedSet k
17delete k (SetWrapper m) = SetWrapper (Data.SortedMap.delete k m)
19contains : Ord k => k -> SortedSet k -> Bool
20contains k (SetWrapper m) = isJust (Data.SortedMap.lookup k m)
22fromList : Ord k => List k -> SortedSet k
23fromList l = SetWrapper (Data.SortedMap.fromList (map (\i => (i, ())) l))
25toList : Ord k => SortedSet k -> List k
26toList (SetWrapper m) = map (\(i, _) => i) (Data.SortedMap.toList m)