packages feed

hydra-0.8.0: src/main/haskell/Hydra/Dsl/Lib/Strings.hs

module Hydra.Dsl.Lib.Strings where

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


(++) :: TTerm String -> TTerm String -> TTerm String
l ++ r = (TTerm $ Terms.primitive _strings_cat) @@ (list [l, r])

cat :: TTerm ([String] -> String)
cat = TTerm $ Terms.primitive _strings_cat

cat2 :: TTerm (String -> String -> String)
cat2 = TTerm $ Terms.primitive _strings_cat2

fromList :: TTerm ([Int] -> String)
fromList = TTerm $ Terms.primitive _strings_fromList

intercalate :: TTerm (String -> [String] -> String)
intercalate = TTerm $ Terms.primitive _strings_intercalate

isEmpty :: TTerm (String -> Bool)
isEmpty = TTerm $ Terms.primitive _strings_isEmpty

length :: TTerm (String -> Int)
length = TTerm $ Terms.primitive _strings_length

splitOn :: TTerm (String -> String -> [String])
splitOn = TTerm $ Terms.primitive _strings_splitOn

toList :: TTerm (String -> [Int])
toList = TTerm $ Terms.primitive _strings_toList

toLower :: TTerm (String -> String)
toLower = TTerm $ Terms.primitive _strings_toLower

toUpper :: TTerm (String -> String)
toUpper = TTerm $ Terms.primitive _strings_toUpper

-- Helpers

concat :: [TTerm String] -> TTerm String
concat strings = (TTerm $ Terms.primitive _strings_cat) @@ list strings