module Hydra.Dsl.Lib.Lists where

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


concat :: Datum ([[a]] -> [a])
concat :: forall a. Datum ([[a]] -> [a])
concat = Term -> Datum ([[a]] -> [a])
forall a. Term -> Datum a
Datum (Term -> Datum ([[a]] -> [a])) -> Term -> Datum ([[a]] -> [a])
forall a b. (a -> b) -> a -> b
$ Name -> Term
Terms.primitive Name
_lists_concat

concat2 :: Datum ([a] -> [a] -> [a])
concat2 :: forall a. Datum ([a] -> [a] -> [a])
concat2 = Term -> Datum ([a] -> [a] -> [a])
forall a. Term -> Datum a
Datum (Term -> Datum ([a] -> [a] -> [a]))
-> Term -> Datum ([a] -> [a] -> [a])
forall a b. (a -> b) -> a -> b
$ Name -> Term
Terms.primitive Name
_lists_concat2

cons :: Datum (a -> [a] -> [a])
cons :: forall a. Datum (a -> [a] -> [a])
cons = Term -> Datum (a -> [a] -> [a])
forall a. Term -> Datum a
Datum (Term -> Datum (a -> [a] -> [a]))
-> Term -> Datum (a -> [a] -> [a])
forall a b. (a -> b) -> a -> b
$ Name -> Term
Terms.primitive Name
_lists_cons

foldl :: Datum ((b -> a -> b) -> b -> [a] -> b)
foldl :: forall b a. Datum ((b -> a -> b) -> b -> [a] -> b)
foldl = Term -> Datum ((b -> a -> b) -> b -> [a] -> b)
forall a. Term -> Datum a
Datum (Term -> Datum ((b -> a -> b) -> b -> [a] -> b))
-> Term -> Datum ((b -> a -> b) -> b -> [a] -> b)
forall a b. (a -> b) -> a -> b
$ Name -> Term
Terms.primitive Name
_lists_foldl

head :: Datum ([a] -> a)
head :: forall a. Datum ([a] -> a)
head = Term -> Datum ([a] -> a)
forall a. Term -> Datum a
Datum (Term -> Datum ([a] -> a)) -> Term -> Datum ([a] -> a)
forall a b. (a -> b) -> a -> b
$ Name -> Term
Terms.primitive Name
_lists_head

intercalate :: Datum ([a] -> [[a]] -> [a])
intercalate :: forall a. Datum ([a] -> [[a]] -> [a])
intercalate = Term -> Datum ([a] -> [[a]] -> [a])
forall a. Term -> Datum a
Datum (Term -> Datum ([a] -> [[a]] -> [a]))
-> Term -> Datum ([a] -> [[a]] -> [a])
forall a b. (a -> b) -> a -> b
$ Name -> Term
Terms.primitive Name
_lists_intercalate

intersperse :: Datum ([a] -> a -> [a])
intersperse :: forall a. Datum ([a] -> a -> [a])
intersperse = Term -> Datum ([a] -> a -> [a])
forall a. Term -> Datum a
Datum (Term -> Datum ([a] -> a -> [a]))
-> Term -> Datum ([a] -> a -> [a])
forall a b. (a -> b) -> a -> b
$ Name -> Term
Terms.primitive Name
_lists_intersperse

last :: Datum ([a] -> a)
last :: forall a. Datum ([a] -> a)
last = Term -> Datum ([a] -> a)
forall a. Term -> Datum a
Datum (Term -> Datum ([a] -> a)) -> Term -> Datum ([a] -> a)
forall a b. (a -> b) -> a -> b
$ Name -> Term
Terms.primitive Name
_lists_last

length :: Datum ([a] -> Int)
length :: forall a. Datum ([a] -> Int)
length = Term -> Datum ([a] -> Int)
forall a. Term -> Datum a
Datum (Term -> Datum ([a] -> Int)) -> Term -> Datum ([a] -> Int)
forall a b. (a -> b) -> a -> b
$ Name -> Term
Terms.primitive Name
_lists_length

map :: Datum ((a -> b) -> [a] -> [b])
map :: forall a b. Datum ((a -> b) -> [a] -> [b])
map = Term -> Datum ((a -> b) -> [a] -> [b])
forall a. Term -> Datum a
Datum (Term -> Datum ((a -> b) -> [a] -> [b]))
-> Term -> Datum ((a -> b) -> [a] -> [b])
forall a b. (a -> b) -> a -> b
$ Name -> Term
Terms.primitive Name
_lists_map

nub :: Eq a => Datum ([a] -> [a])
nub :: forall a. Eq a => Datum ([a] -> [a])
nub = Term -> Datum ([a] -> [a])
forall a. Term -> Datum a
Datum (Term -> Datum ([a] -> [a])) -> Term -> Datum ([a] -> [a])
forall a b. (a -> b) -> a -> b
$ Name -> Term
Terms.primitive Name
_lists_nub

null :: Datum ([a] -> Bool)
null :: forall a. Datum ([a] -> Bool)
null = Term -> Datum ([a] -> Bool)
forall a. Term -> Datum a
Datum (Term -> Datum ([a] -> Bool)) -> Term -> Datum ([a] -> Bool)
forall a b. (a -> b) -> a -> b
$ Name -> Term
Terms.primitive Name
_lists_null

pure :: Datum (a -> [a])
pure :: forall a. Datum (a -> [a])
pure = Term -> Datum (a -> [a])
forall a. Term -> Datum a
Datum (Term -> Datum (a -> [a])) -> Term -> Datum (a -> [a])
forall a b. (a -> b) -> a -> b
$ Name -> Term
Terms.primitive Name
_lists_pure

reverse :: Datum ([a] -> [a])
reverse :: forall a. Datum ([a] -> [a])
reverse = Term -> Datum ([a] -> [a])
forall a. Term -> Datum a
Datum (Term -> Datum ([a] -> [a])) -> Term -> Datum ([a] -> [a])
forall a b. (a -> b) -> a -> b
$ Name -> Term
Terms.primitive Name
_lists_reverse

safeHead :: Datum ([a] -> Maybe a)
safeHead :: forall a. Datum ([a] -> Maybe a)
safeHead = Term -> Datum ([a] -> Maybe a)
forall a. Term -> Datum a
Datum (Term -> Datum ([a] -> Maybe a)) -> Term -> Datum ([a] -> Maybe a)
forall a b. (a -> b) -> a -> b
$ Name -> Term
Terms.primitive Name
_lists_safeHead

tail :: Datum ([a] -> [a])
tail :: forall a. Datum ([a] -> [a])
tail = Term -> Datum ([a] -> [a])
forall a. Term -> Datum a
Datum (Term -> Datum ([a] -> [a])) -> Term -> Datum ([a] -> [a])
forall a b. (a -> b) -> a -> b
$ Name -> Term
Terms.primitive Name
_lists_tail