module Language.Haskell.FreeTheorems.NameStores
( typeNameStore
, relationNameStore
, typeExpressionNameStore
, functionNameStore1
, functionNameStore2
, variableNameStore
) where
import Data.List (unfoldr)
typeNameStore :: [String]
typeNameStore :: [String]
typeNameStore = String -> Char -> [String]
createNames String
"abcde" Char
'a'
relationNameStore :: [String]
relationNameStore :: [String]
relationNameStore = String -> Char -> [String]
createNames String
"RS" Char
'R'
typeExpressionNameStore :: [String]
typeExpressionNameStore :: [String]
typeExpressionNameStore = String -> Char -> [String]
createNames String
"" Char
't'
functionNameStore1 :: [String]
functionNameStore1 :: [String]
functionNameStore1 = String -> Char -> [String]
createNames String
"fgh" Char
'f'
functionNameStore2 :: [String]
functionNameStore2 :: [String]
functionNameStore2 = String -> Char -> [String]
createNames String
"pqrs" Char
'p'
variableNameStore :: [String]
variableNameStore :: [String]
variableNameStore = String -> Char -> [String]
createNames String
"xyzvwabcdeijklmn" Char
'x'
createNames :: [Char] -> Char -> [String]
createNames :: String -> Char -> [String]
createNames String
prefixes Char
prefix =
let unpack :: [a] -> Maybe ([a], [a])
unpack [a]
is = case [a]
is of { (a
c:[a]
cs) -> forall a. a -> Maybe a
Just ([a
c], [a]
cs) ; [a]
otherwise -> forall a. Maybe a
Nothing }
in forall b a. (b -> Maybe (a, b)) -> b -> [a]
unfoldr forall {a}. [a] -> Maybe ([a], [a])
unpack String
prefixes forall a. [a] -> [a] -> [a]
++ (forall a b. (a -> b) -> [a] -> [b]
map (\Integer
i -> Char
prefix forall a. a -> [a] -> [a]
: forall a. Show a => a -> String
show Integer
i) [Integer
1..])