module Hydra.Dsl.Lib.Maps where

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

import Data.Map


empty :: TTerm (Map k v)
empty :: forall k v. TTerm (Map k v)
empty = Term -> TTerm (Map k v)
forall a. Term -> TTerm a
TTerm (Term -> TTerm (Map k v)) -> Term -> TTerm (Map k v)
forall a b. (a -> b) -> a -> b
$ Name -> Term
Terms.primitive Name
_maps_empty

fromList :: TTerm ([(k, v)] -> Map k v)
fromList :: forall k v. TTerm ([(k, v)] -> Map k v)
fromList = Term -> TTerm ([(k, v)] -> Map k v)
forall a. Term -> TTerm a
TTerm (Term -> TTerm ([(k, v)] -> Map k v))
-> Term -> TTerm ([(k, v)] -> Map k v)
forall a b. (a -> b) -> a -> b
$ Name -> Term
Terms.primitive Name
_maps_fromList

insert :: TTerm (k -> v -> Map k v -> Map k v)
insert :: forall k v. TTerm (k -> v -> Map k v -> Map k v)
insert = Term -> TTerm (k -> v -> Map k v -> Map k v)
forall a. Term -> TTerm a
TTerm (Term -> TTerm (k -> v -> Map k v -> Map k v))
-> Term -> TTerm (k -> v -> Map k v -> Map k v)
forall a b. (a -> b) -> a -> b
$ Name -> Term
Terms.primitive Name
_maps_insert

isEmpty :: TTerm (Map k v -> Bool)
isEmpty :: forall k v. TTerm (Map k v -> Bool)
isEmpty = Term -> TTerm (Map k v -> Bool)
forall a. Term -> TTerm a
TTerm (Term -> TTerm (Map k v -> Bool))
-> Term -> TTerm (Map k v -> Bool)
forall a b. (a -> b) -> a -> b
$ Name -> Term
Terms.primitive Name
_maps_isEmpty

keys :: TTerm (Map k v -> [k])
keys :: forall k v. TTerm (Map k v -> [k])
keys = Term -> TTerm (Map k v -> [k])
forall a. Term -> TTerm a
TTerm (Term -> TTerm (Map k v -> [k])) -> Term -> TTerm (Map k v -> [k])
forall a b. (a -> b) -> a -> b
$ Name -> Term
Terms.primitive Name
_maps_keys

lookup :: TTerm (k -> Map k v -> Maybe v)
lookup :: forall k v. TTerm (k -> Map k v -> Maybe v)
lookup = Term -> TTerm (k -> Map k v -> Maybe v)
forall a. Term -> TTerm a
TTerm (Term -> TTerm (k -> Map k v -> Maybe v))
-> Term -> TTerm (k -> Map k v -> Maybe v)
forall a b. (a -> b) -> a -> b
$ Name -> Term
Terms.primitive Name
_maps_lookup

map :: TTerm ((v1 -> v2) -> Map k v1 -> Map k v2)
map :: forall v1 v2 k. TTerm ((v1 -> v2) -> Map k v1 -> Map k v2)
map = Term -> TTerm ((v1 -> v2) -> Map k v1 -> Map k v2)
forall a. Term -> TTerm a
TTerm (Term -> TTerm ((v1 -> v2) -> Map k v1 -> Map k v2))
-> Term -> TTerm ((v1 -> v2) -> Map k v1 -> Map k v2)
forall a b. (a -> b) -> a -> b
$ Name -> Term
Terms.primitive Name
_maps_map

mapKeys :: TTerm ((k1 -> k2) -> Map k1 v -> Map k2 v)
mapKeys :: forall k1 k2 v. TTerm ((k1 -> k2) -> Map k1 v -> Map k2 v)
mapKeys = Term -> TTerm ((k1 -> k2) -> Map k1 v -> Map k2 v)
forall a. Term -> TTerm a
TTerm (Term -> TTerm ((k1 -> k2) -> Map k1 v -> Map k2 v))
-> Term -> TTerm ((k1 -> k2) -> Map k1 v -> Map k2 v)
forall a b. (a -> b) -> a -> b
$ Name -> Term
Terms.primitive Name
_maps_mapKeys

remove :: TTerm (k -> Map k v -> Map k v)
remove :: forall k v. TTerm (k -> Map k v -> Map k v)
remove = Term -> TTerm (k -> Map k v -> Map k v)
forall a. Term -> TTerm a
TTerm (Term -> TTerm (k -> Map k v -> Map k v))
-> Term -> TTerm (k -> Map k v -> Map k v)
forall a b. (a -> b) -> a -> b
$ Name -> Term
Terms.primitive Name
_maps_remove

singleton :: TTerm (k -> v -> Map k v)
singleton :: forall k v. TTerm (k -> v -> Map k v)
singleton = Term -> TTerm (k -> v -> Map k v)
forall a. Term -> TTerm a
TTerm (Term -> TTerm (k -> v -> Map k v))
-> Term -> TTerm (k -> v -> Map k v)
forall a b. (a -> b) -> a -> b
$ Name -> Term
Terms.primitive Name
_maps_singleton

size :: TTerm (Map k v -> Int)
size :: forall k v. TTerm (Map k v -> Int)
size = Term -> TTerm (Map k v -> Int)
forall a. Term -> TTerm a
TTerm (Term -> TTerm (Map k v -> Int)) -> Term -> TTerm (Map k v -> Int)
forall a b. (a -> b) -> a -> b
$ Name -> Term
Terms.primitive Name
_maps_size

toList :: TTerm (Map k v -> [(k, v)])
toList :: forall k v. TTerm (Map k v -> [(k, v)])
toList = Term -> TTerm (Map k v -> [(k, v)])
forall a. Term -> TTerm a
TTerm (Term -> TTerm (Map k v -> [(k, v)]))
-> Term -> TTerm (Map k v -> [(k, v)])
forall a b. (a -> b) -> a -> b
$ Name -> Term
Terms.primitive Name
_maps_toList

values :: TTerm (Map k v -> [v])
values :: forall k v. TTerm (Map k v -> [v])
values = Term -> TTerm (Map k v -> [v])
forall a. Term -> TTerm a
TTerm (Term -> TTerm (Map k v -> [v])) -> Term -> TTerm (Map k v -> [v])
forall a b. (a -> b) -> a -> b
$ Name -> Term
Terms.primitive Name
_maps_values