module Language.Lambda.Shared.UniqueSupply where

import RIO
import RIO.Text (pack)

defaultUniques :: [Text]
defaultUniques :: [Text]
defaultUniques = (String -> Text) -> [String] -> [Text]
forall a b. (a -> b) -> [a] -> [b]
map String -> Text
pack [String]
strings
  where strings :: [String]
strings = (String -> [String]) -> [String] -> [String]
forall (t :: * -> *) a b. Foldable t => (a -> [b]) -> t a -> [b]
concatMap (\String
p -> (Char -> String) -> String -> [String]
forall a b. (a -> b) -> [a] -> [b]
map (Char -> String -> String
forall a. a -> [a] -> [a]
:String
p) (String -> [String]) -> (String -> String) -> String -> [String]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> String
forall a. [a] -> [a]
reverse (String -> [String]) -> String -> [String]
forall a b. (a -> b) -> a -> b
$ [Char
'a'..Char
'z']) [String]
suffix
        suffix :: [String]
suffix = String
"" String -> [String] -> [String]
forall a. a -> [a] -> [a]
: (Int -> String) -> [Int] -> [String]
forall a b. (a -> b) -> [a] -> [b]
map Int -> String
forall a. Show a => a -> String
show [(Int
0::Int)..]