packages feed

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

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 = Datum $ Terms.primitive _lists_concat

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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