packages feed

hydra-0.5.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


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

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

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

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

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

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

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

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

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

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

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

-- Helpers

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