packages feed

hydra-0.5.0: src/main/haskell/Hydra/Dsl/Lib/Maps.hs

module Hydra.Dsl.Lib.Maps where

import Hydra.Phantoms
import Hydra.Sources.Libraries
import qualified Hydra.Dsl.Terms as Terms

import Data.Map


empty :: Datum (Map k v)
empty = Datum $ Terms.primitive _maps_empty

fromList :: Datum ([(k, v)] -> Map k v)
fromList = Datum $ Terms.primitive _maps_fromList

insert :: Datum (k -> v -> Map k v -> Map k v)
insert = Datum $ Terms.primitive _maps_insert

isEmpty :: Datum (Map k v -> Bool)
isEmpty = Datum $ Terms.primitive _maps_isEmpty

keys :: Datum (Map k v -> [k])
keys = Datum $ Terms.primitive _maps_keys

lookup :: Datum (k -> Map k v -> Maybe v)
lookup = Datum $ Terms.primitive _maps_lookup

map :: Datum ((v1 -> v2) -> Map k v1 -> Map k v2)
map = Datum $ Terms.primitive _maps_map

mapKeys :: Datum ((k1 -> k2) -> Map k1 v -> Map k2 v)
mapKeys = Datum $ Terms.primitive _maps_mapKeys

remove :: Datum (k -> Map k v -> Map k v)
remove = Datum $ Terms.primitive _maps_remove

singleton :: Datum (k -> v -> Map k v)
singleton = Datum $ Terms.primitive _maps_singleton

size :: Datum (Map k v -> Int)
size = Datum $ Terms.primitive _maps_size

toList :: Datum (Map k v -> [(k, v)])
toList = Datum $ Terms.primitive _maps_toList

values :: Datum (Map k v -> [v])
values = Datum $ Terms.primitive _maps_values