module Hydra.Dsl.Lib.Sets where

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

import Data.Set


contains :: Datum (a -> Set a -> Bool)
contains :: forall a. Datum (a -> Set a -> Bool)
contains = Term -> Datum (a -> Set a -> Bool)
forall a. Term -> Datum a
Datum (Term -> Datum (a -> Set a -> Bool))
-> Term -> Datum (a -> Set a -> Bool)
forall a b. (a -> b) -> a -> b
$ Name -> Term
Terms.primitive Name
_sets_contains

difference :: Datum (Set a -> Set a -> Set a)
difference :: forall a. Datum (Set a -> Set a -> Set a)
difference = Term -> Datum (Set a -> Set a -> Set a)
forall a. Term -> Datum a
Datum (Term -> Datum (Set a -> Set a -> Set a))
-> Term -> Datum (Set a -> Set a -> Set a)
forall a b. (a -> b) -> a -> b
$ Name -> Term
Terms.primitive Name
_sets_difference

empty :: Datum (Set a)
empty :: forall a. Datum (Set a)
empty = Term -> Datum (Set a)
forall a. Term -> Datum a
Datum (Term -> Datum (Set a)) -> Term -> Datum (Set a)
forall a b. (a -> b) -> a -> b
$ Name -> Term
Terms.primitive Name
_sets_empty

fromList :: Datum ([a] -> Set a)
fromList :: forall a. Datum ([a] -> Set a)
fromList = Term -> Datum ([a] -> Set a)
forall a. Term -> Datum a
Datum (Term -> Datum ([a] -> Set a)) -> Term -> Datum ([a] -> Set a)
forall a b. (a -> b) -> a -> b
$ Name -> Term
Terms.primitive Name
_sets_fromList

insert :: Datum (a -> Set a -> Set a)
insert :: forall a. Datum (a -> Set a -> Set a)
insert = Term -> Datum (a -> Set a -> Set a)
forall a. Term -> Datum a
Datum (Term -> Datum (a -> Set a -> Set a))
-> Term -> Datum (a -> Set a -> Set a)
forall a b. (a -> b) -> a -> b
$ Name -> Term
Terms.primitive Name
_sets_insert

intersection :: Datum (Set a -> Set a -> Set a)
intersection :: forall a. Datum (Set a -> Set a -> Set a)
intersection = Term -> Datum (Set a -> Set a -> Set a)
forall a. Term -> Datum a
Datum (Term -> Datum (Set a -> Set a -> Set a))
-> Term -> Datum (Set a -> Set a -> Set a)
forall a b. (a -> b) -> a -> b
$ Name -> Term
Terms.primitive Name
_sets_intersection

isEmpty :: Datum (Set a -> Bool)
isEmpty :: forall a. Datum (Set a -> Bool)
isEmpty = Term -> Datum (Set a -> Bool)
forall a. Term -> Datum a
Datum (Term -> Datum (Set a -> Bool)) -> Term -> Datum (Set a -> Bool)
forall a b. (a -> b) -> a -> b
$ Name -> Term
Terms.primitive Name
_sets_isEmpty

map :: Datum ((a -> b) -> Set a -> Set b)
map :: forall a b. Datum ((a -> b) -> Set a -> Set b)
map = Term -> Datum ((a -> b) -> Set a -> Set b)
forall a. Term -> Datum a
Datum (Term -> Datum ((a -> b) -> Set a -> Set b))
-> Term -> Datum ((a -> b) -> Set a -> Set b)
forall a b. (a -> b) -> a -> b
$ Name -> Term
Terms.primitive Name
_sets_map

remove :: Datum (a -> Set a -> Set a)
remove :: forall a. Datum (a -> Set a -> Set a)
remove = Term -> Datum (a -> Set a -> Set a)
forall a. Term -> Datum a
Datum (Term -> Datum (a -> Set a -> Set a))
-> Term -> Datum (a -> Set a -> Set a)
forall a b. (a -> b) -> a -> b
$ Name -> Term
Terms.primitive Name
_sets_remove

singleton :: Datum (a -> Set a)
singleton :: forall a. Datum (a -> Set a)
singleton = Term -> Datum (a -> Set a)
forall a. Term -> Datum a
Datum (Term -> Datum (a -> Set a)) -> Term -> Datum (a -> Set a)
forall a b. (a -> b) -> a -> b
$ Name -> Term
Terms.primitive Name
_sets_singleton

size :: Datum (Set a -> Int)
size :: forall a. Datum (Set a -> Int)
size = Term -> Datum (Set a -> Int)
forall a. Term -> Datum a
Datum (Term -> Datum (Set a -> Int)) -> Term -> Datum (Set a -> Int)
forall a b. (a -> b) -> a -> b
$ Name -> Term
Terms.primitive Name
_sets_size

toList :: Datum (Set a -> [a])
toList :: forall a. Datum (Set a -> [a])
toList = Term -> Datum (Set a -> [a])
forall a. Term -> Datum a
Datum (Term -> Datum (Set a -> [a])) -> Term -> Datum (Set a -> [a])
forall a b. (a -> b) -> a -> b
$ Name -> Term
Terms.primitive Name
_sets_toList

union :: Datum (Set a -> Set a -> Set a)
union :: forall a. Datum (Set a -> Set a -> Set a)
union = Term -> Datum (Set a -> Set a -> Set a)
forall a. Term -> Datum a
Datum (Term -> Datum (Set a -> Set a -> Set a))
-> Term -> Datum (Set a -> Set a -> Set a)
forall a b. (a -> b) -> a -> b
$ Name -> Term
Terms.primitive Name
_sets_union