Agda-2.3.2.2: examples/lib/Data/Map.agda
module Data.Map
(Key : Set)
where
import Data.Bool
import Data.Maybe
open Data.Bool
infix 40 _<_ _>_
postulate
_<_ : Key -> Key -> Bool
_>_ : Key -> Key -> Bool
x > y = y < x
private
data Map' (a : Set) : Set where
leaf : Map' a
node : Key -> a -> Map' a -> Map' a -> Map' a
Map : Set -> Set
Map = Map'
empty : {a : Set} -> Map a
empty = leaf
{-
insert : {a : Set} -> Key -> a -> Map a -> Map a
insert k v leaf = node k v leaf leaf
insert k v (node k' v' l r) =
| k < k' => node k' v' (insert k v l) r
| k > k' => node k' v' l (insert k v r)
| otherwise node k' v l r
-}
open Data.Maybe
{-
lookup : {a : Set} -> Key -> Map a -> Maybe a
lookup k leaf = nothing
lookup k (node k' v l r) =
| k < k' => lookup k l
| k > k' => lookup k r
| otherwise just v
-}