module Data.Owoify.Internal.Data.Mappings ( mapBracketsToStartrails , mapConsonantRToConsonantW , mapDeadToDed , mapEwToUwu , mapFiToFwi , mapFucToFwuc , mapHahaToHeheXd , mapHeyToHay , mapLeToWal , mapLlToWw , mapLOrROToWo , mapLyToWy , mapMeToMwe , mapMomToMwom , mapNrToNw , mapNVowelTToNd , mapNVowelToNy , mapOldToOwld , mapOlToOwl , mapOToOwo , mapOveToUv , mapOverToOwor , mapPeriodCommaExclamationSemicolonToKaomojis , mapPleToPwe , mapPoiToPwoi , mapReadToWead , mapROrLToW , mapRyToWwy , mapSpecificConsonantsLeToLetterAndWal , mapSpecificConsonantsOToLetterAndWo , mapThatToDat , mapThToF , mapTheToTeh , mapTimeToTim , mapVerToWer , mapVeToWe , mapVOrWLeToWal , mapVowelOrRExceptOLToWl , mapWorseToWose , mapYouToU ) where import Prelude import Data.Owoify.Internal.Entity.Word (innerReplace, innerReplaceWithFuncMultiple, innerReplaceWithFuncSingle, InnerWord) import Data.Text.Lazy (Text, pack, toUpper) import Text.RE.PCRE.Text.Lazy (compileRegex, RE) import System.Random.Stateful (applyAtomicGen, uniformR) import System.Random (getStdRandom, Random (randomR)) compileDefaultOptionRegex :: String -> IO RE compileDefaultOptionRegex :: String -> IO RE compileDefaultOptionRegex = String -> IO RE forall (m :: * -> *). (Functor m, Monad m, MonadFail m) => String -> m RE compileRegex oToOwo :: IO RE oToOwo :: IO RE oToOwo = String -> IO RE compileDefaultOptionRegex String "o" ewToUwu :: IO RE ewToUwu :: IO RE ewToUwu = String -> IO RE compileDefaultOptionRegex String "ew" heyToHay :: IO RE heyToHay :: IO RE heyToHay = String -> IO RE compileDefaultOptionRegex String "([Hh])ey" deadToDedUpper :: IO RE deadToDedUpper :: IO RE deadToDedUpper = String -> IO RE compileDefaultOptionRegex String "Dead" deadToDedLower :: IO RE deadToDedLower :: IO RE deadToDedLower = String -> IO RE compileDefaultOptionRegex String "dead" nVowelTToNd :: IO RE nVowelTToNd :: IO RE nVowelTToNd = String -> IO RE compileDefaultOptionRegex String "n[aeiou]*t" readToWeadUpper :: IO RE readToWeadUpper :: IO RE readToWeadUpper = String -> IO RE compileDefaultOptionRegex String "Read" readToWeadLower :: IO RE readToWeadLower :: IO RE readToWeadLower = String -> IO RE compileDefaultOptionRegex String "read" bracketsToStartrailsFore :: IO RE bracketsToStartrailsFore :: IO RE bracketsToStartrailsFore = String -> IO RE compileDefaultOptionRegex String "[({<]" bracketsToStartrailsRear :: IO RE bracketsToStartrailsRear :: IO RE bracketsToStartrailsRear = String -> IO RE compileDefaultOptionRegex String "[)}>]" periodCommaExclamationSemicolonToKaomojisFirst :: IO RE periodCommaExclamationSemicolonToKaomojisFirst :: IO RE periodCommaExclamationSemicolonToKaomojisFirst = String -> IO RE compileDefaultOptionRegex String "[.,](?![0-9])" periodCommaExclamationSemicolonToKaomojisSecond :: IO RE periodCommaExclamationSemicolonToKaomojisSecond :: IO RE periodCommaExclamationSemicolonToKaomojisSecond = String -> IO RE compileDefaultOptionRegex String "[!;]+" thatToDatUpper :: IO RE thatToDatUpper :: IO RE thatToDatUpper = String -> IO RE compileDefaultOptionRegex String "That" thatToDatLower :: IO RE thatToDatLower :: IO RE thatToDatLower = String -> IO RE compileDefaultOptionRegex String "that" thToFUpper :: IO RE thToFUpper :: IO RE thToFUpper = String -> IO RE compileDefaultOptionRegex String "TH(?!E)" thToFLower :: IO RE thToFLower :: IO RE thToFLower = String -> IO RE compileDefaultOptionRegex String "[Tt]h(?![Ee])" leToWal :: IO RE leToWal :: IO RE leToWal = String -> IO RE compileDefaultOptionRegex String "le$" veToWeUpper :: IO RE veToWeUpper :: IO RE veToWeUpper = String -> IO RE compileDefaultOptionRegex String "Ve" veToWeLower :: IO RE veToWeLower :: IO RE veToWeLower = String -> IO RE compileDefaultOptionRegex String "ve" ryToWwy :: IO RE ryToWwy :: IO RE ryToWwy = String -> IO RE compileDefaultOptionRegex String "ry" rOrLToWUpper :: IO RE rOrLToWUpper :: IO RE rOrLToWUpper = String -> IO RE compileDefaultOptionRegex String "(?:R|L)" rOrLToWLower :: IO RE rOrLToWLower :: IO RE rOrLToWLower = String -> IO RE compileDefaultOptionRegex String "(?:r|l)" llToWw :: IO RE llToWw :: IO RE llToWw = String -> IO RE compileDefaultOptionRegex String "ll" vowelOrRExceptOLToWlUpper :: IO RE vowelOrRExceptOLToWlUpper :: IO RE vowelOrRExceptOLToWlUpper = String -> IO RE compileDefaultOptionRegex String "[AEIUR]([lL])$" vowelOrRExceptOLToWlLower :: IO RE vowelOrRExceptOLToWlLower :: IO RE vowelOrRExceptOLToWlLower = String -> IO RE compileDefaultOptionRegex String "[aeiur]l$" oldToOwldUpper :: IO RE oldToOwldUpper :: IO RE oldToOwldUpper = String -> IO RE compileDefaultOptionRegex String "OLD" oldToOwldLower :: IO RE oldToOwldLower :: IO RE oldToOwldLower = String -> IO RE compileDefaultOptionRegex String "([Oo])ld" olToOwlUpper :: IO RE olToOwlUpper :: IO RE olToOwlUpper = String -> IO RE compileDefaultOptionRegex String "OL" olToOwlLower :: IO RE olToOwlLower :: IO RE olToOwlLower = String -> IO RE compileDefaultOptionRegex String "([Oo])l" lOrROToWoUpper :: IO RE lOrROToWoUpper :: IO RE lOrROToWoUpper = String -> IO RE compileDefaultOptionRegex String "[LR]([oO])" lOrROToWoLower :: IO RE lOrROToWoLower :: IO RE lOrROToWoLower = String -> IO RE compileDefaultOptionRegex String "[lr]o" specificConsonantsOToLetterAndWoUpper :: IO RE specificConsonantsOToLetterAndWoUpper :: IO RE specificConsonantsOToLetterAndWoUpper = String -> IO RE compileDefaultOptionRegex String "([BCDFGHJKMNPQSTXYZ])([oO])" specificConsonantsOToLetterAndWoLower :: IO RE specificConsonantsOToLetterAndWoLower :: IO RE specificConsonantsOToLetterAndWoLower = String -> IO RE compileDefaultOptionRegex String "([bcdfghjkmnpqstxyz])o" vOrWLeToWal :: IO RE vOrWLeToWal :: IO RE vOrWLeToWal = String -> IO RE compileDefaultOptionRegex String "[vw]le" fiToFwiUpper :: IO RE fiToFwiUpper :: IO RE fiToFwiUpper = String -> IO RE compileDefaultOptionRegex String "FI" fiToFwiLower :: IO RE fiToFwiLower :: IO RE fiToFwiLower = String -> IO RE compileDefaultOptionRegex String "([Ff])i" verToWer :: IO RE verToWer :: IO RE verToWer = String -> IO RE compileDefaultOptionRegex String "([Vv])er" poiToPwoi :: IO RE poiToPwoi :: IO RE poiToPwoi = String -> IO RE compileDefaultOptionRegex String "([Pp])oi" specificConsonantsLeToLetterAndWal :: IO RE specificConsonantsLeToLetterAndWal :: IO RE specificConsonantsLeToLetterAndWal = String -> IO RE compileDefaultOptionRegex String "([DdFfGgHhJjPpQqRrSsTtXxYyZz])le$" consonantRToConsonantW :: IO RE consonantRToConsonantW :: IO RE consonantRToConsonantW = String -> IO RE compileDefaultOptionRegex String "([BbCcDdFfGgKkPpQqSsTtWwXxZz])r" lyToWyUpper :: IO RE lyToWyUpper :: IO RE lyToWyUpper = String -> IO RE compileDefaultOptionRegex String "Ly" lyToWyLower :: IO RE lyToWyLower :: IO RE lyToWyLower = String -> IO RE compileDefaultOptionRegex String "ly" pleToPwe :: IO RE pleToPwe :: IO RE pleToPwe = String -> IO RE compileDefaultOptionRegex String "([Pp])le" nrToNwUpper :: IO RE nrToNwUpper :: IO RE nrToNwUpper = String -> IO RE compileDefaultOptionRegex String "NR" nrToNwLower :: IO RE nrToNwLower :: IO RE nrToNwLower = String -> IO RE compileDefaultOptionRegex String "nr" funcToFwuc :: IO RE funcToFwuc :: IO RE funcToFwuc = String -> IO RE compileDefaultOptionRegex String "([Ff])uc" momToMwom :: IO RE momToMwom :: IO RE momToMwom = String -> IO RE compileDefaultOptionRegex String "([Mm])om" meToMwe :: IO RE meToMwe :: IO RE meToMwe = String -> IO RE compileDefaultOptionRegex String "([Mm])e" nVowelToNyFirst :: IO RE nVowelToNyFirst :: IO RE nVowelToNyFirst = String -> IO RE compileDefaultOptionRegex String "n([aeiou])" nVowelToNySecond :: IO RE nVowelToNySecond :: IO RE nVowelToNySecond = String -> IO RE compileDefaultOptionRegex String "N([aeiou])" nVowelToNyThird :: IO RE nVowelToNyThird :: IO RE nVowelToNyThird = String -> IO RE compileDefaultOptionRegex String "N([AEIOU])" oveToUvUpper :: IO RE oveToUvUpper :: IO RE oveToUvUpper = String -> IO RE compileDefaultOptionRegex String "OVE" oveToUvLower :: IO RE oveToUvLower :: IO RE oveToUvLower = String -> IO RE compileDefaultOptionRegex String "ove" hahaToHeheXd :: IO RE hahaToHeheXd :: IO RE hahaToHeheXd = String -> IO RE compileDefaultOptionRegex String "\\b(ha|hah|heh|hehe)+\\b" theToTeh :: IO RE theToTeh :: IO RE theToTeh = String -> IO RE compileDefaultOptionRegex String "\\b([Tt])he\\b" youToUUpper :: IO RE youToUUpper :: IO RE youToUUpper = String -> IO RE compileDefaultOptionRegex String "\\bYou\\b" youToULower :: IO RE youToULower :: IO RE youToULower = String -> IO RE compileDefaultOptionRegex String "\\byou\\b" timeToTim :: IO RE timeToTim :: IO RE timeToTim = String -> IO RE compileDefaultOptionRegex String "\\b([Tt])ime\\b" overToOwor :: IO RE overToOwor :: IO RE overToOwor = String -> IO RE compileDefaultOptionRegex String "([Oo])ver" worseToWose :: IO RE worseToWose :: IO RE worseToWose = String -> IO RE compileDefaultOptionRegex String "([Ww])orse" faces :: [Text] faces :: [Text] faces = String -> Text pack (String -> Text) -> [String] -> [Text] forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> [ String "(・`ω´・)" , String ";;w;;" , String "owo" , String "UwU" , String ">w<" , String "^w^" , String "(* ^ ω ^)" , String "(⌒ω⌒)" , String "ヽ(*・ω・)ノ" , String "(o´∀`o)" ,String "(o・ω・o)" , String "\(^▽^)/" , String "(*^ω^)" , String "(◕‿◕✿)" , String "(◕ᴥ◕)" , String "ʕ•ᴥ•ʔ" , String "ʕ→ᴥ←ʔ" , String "(*^.^*)" , String "(。♥‿♥。)" , String "OwO" , String "uwu" , String "uvu" , String "UvU" , String "(* ̄з ̄)" , String "(つ✧ω✧)つ" , String "(/ =ω=)/" , String "(╯°□°)╯︵ ┻━┻" ,String "┬─┬ ノ( ゜-゜ノ)" , String "¯\\_(ツ)_/¯" ] mapOToOwo :: InnerWord -> IO InnerWord mapOToOwo :: InnerWord -> IO InnerWord mapOToOwo InnerWord word = do Int n <- (StdGen -> (Int, StdGen)) -> IO Int forall (m :: * -> *) a. MonadIO m => (StdGen -> (a, StdGen)) -> m a getStdRandom ((Int, Int) -> StdGen -> (Int, StdGen) forall a g. (Random a, RandomGen g) => (a, a) -> g -> (a, g) randomR (Int 0, Int 1)) :: IO Int let emoji :: Text emoji = if Int n Int -> Int -> Bool forall a. Ord a => a -> a -> Bool > Int 0 then String -> Text pack String "owo" else String -> Text pack String "o" RE re <- IO RE oToOwo InnerWord -> IO InnerWord forall (f :: * -> *) a. Applicative f => a -> f a pure (InnerWord -> IO InnerWord) -> InnerWord -> IO InnerWord forall a b. (a -> b) -> a -> b $ InnerWord -> RE -> Text -> Bool -> InnerWord innerReplace InnerWord word RE re Text emoji Bool False mapEwToUwu :: InnerWord -> IO InnerWord mapEwToUwu :: InnerWord -> IO InnerWord mapEwToUwu InnerWord word = IO RE ewToUwu IO RE -> (RE -> IO InnerWord) -> IO InnerWord forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b >>= \RE re -> InnerWord -> IO InnerWord forall (f :: * -> *) a. Applicative f => a -> f a pure (InnerWord -> IO InnerWord) -> InnerWord -> IO InnerWord forall a b. (a -> b) -> a -> b $ InnerWord -> RE -> Text -> Bool -> InnerWord innerReplace InnerWord word RE re (String -> Text pack String "uwu") Bool False mapHeyToHay :: InnerWord -> IO InnerWord mapHeyToHay :: InnerWord -> IO InnerWord mapHeyToHay InnerWord word = IO RE heyToHay IO RE -> (RE -> IO InnerWord) -> IO InnerWord forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b >>= \RE re -> InnerWord -> IO InnerWord forall (f :: * -> *) a. Applicative f => a -> f a pure (InnerWord -> IO InnerWord) -> InnerWord -> IO InnerWord forall a b. (a -> b) -> a -> b $ InnerWord -> RE -> Text -> Bool -> InnerWord innerReplace InnerWord word RE re (String -> Text pack String "$1ay") Bool False mapDeadToDed :: InnerWord -> IO InnerWord mapDeadToDed :: InnerWord -> IO InnerWord mapDeadToDed InnerWord word = do InnerWord w <- IO RE deadToDedUpper IO RE -> (RE -> IO InnerWord) -> IO InnerWord forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b >>= \RE re -> InnerWord -> IO InnerWord forall (f :: * -> *) a. Applicative f => a -> f a pure (InnerWord -> IO InnerWord) -> InnerWord -> IO InnerWord forall a b. (a -> b) -> a -> b $ InnerWord -> RE -> Text -> Bool -> InnerWord innerReplace InnerWord word RE re (String -> Text pack String "Ded") Bool False IO RE deadToDedLower IO RE -> (RE -> IO InnerWord) -> IO InnerWord forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b >>= \RE re -> InnerWord -> IO InnerWord forall (f :: * -> *) a. Applicative f => a -> f a pure (InnerWord -> IO InnerWord) -> InnerWord -> IO InnerWord forall a b. (a -> b) -> a -> b $ InnerWord -> RE -> Text -> Bool -> InnerWord innerReplace InnerWord w RE re (String -> Text pack String "ded") Bool False mapNVowelTToNd :: InnerWord -> IO InnerWord mapNVowelTToNd :: InnerWord -> IO InnerWord mapNVowelTToNd InnerWord word = IO RE nVowelTToNd IO RE -> (RE -> IO InnerWord) -> IO InnerWord forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b >>= \RE re -> InnerWord -> IO InnerWord forall (f :: * -> *) a. Applicative f => a -> f a pure (InnerWord -> IO InnerWord) -> InnerWord -> IO InnerWord forall a b. (a -> b) -> a -> b $ InnerWord -> RE -> Text -> Bool -> InnerWord innerReplace InnerWord word RE re (String -> Text pack String "nd") Bool False mapReadToWead :: InnerWord -> IO InnerWord mapReadToWead :: InnerWord -> IO InnerWord mapReadToWead InnerWord word = do InnerWord w <- IO RE readToWeadUpper IO RE -> (RE -> IO InnerWord) -> IO InnerWord forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b >>= \RE re -> InnerWord -> IO InnerWord forall (f :: * -> *) a. Applicative f => a -> f a pure (InnerWord -> IO InnerWord) -> InnerWord -> IO InnerWord forall a b. (a -> b) -> a -> b $ InnerWord -> RE -> Text -> Bool -> InnerWord innerReplace InnerWord word RE re (String -> Text pack String "Wead") Bool False IO RE readToWeadLower IO RE -> (RE -> IO InnerWord) -> IO InnerWord forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b >>= \RE re -> InnerWord -> IO InnerWord forall (f :: * -> *) a. Applicative f => a -> f a pure (InnerWord -> IO InnerWord) -> InnerWord -> IO InnerWord forall a b. (a -> b) -> a -> b $ InnerWord -> RE -> Text -> Bool -> InnerWord innerReplace InnerWord w RE re (String -> Text pack String "wead") Bool False mapBracketsToStartrails :: InnerWord -> IO InnerWord mapBracketsToStartrails :: InnerWord -> IO InnerWord mapBracketsToStartrails InnerWord word = do InnerWord w <- IO RE bracketsToStartrailsFore IO RE -> (RE -> IO InnerWord) -> IO InnerWord forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b >>= \RE re -> InnerWord -> IO InnerWord forall (f :: * -> *) a. Applicative f => a -> f a pure (InnerWord -> IO InnerWord) -> InnerWord -> IO InnerWord forall a b. (a -> b) -> a -> b $ InnerWord -> RE -> Text -> Bool -> InnerWord innerReplace InnerWord word RE re (String -> Text pack String "。・:*:・゚★,。・:*:・゚☆") Bool False IO RE bracketsToStartrailsRear IO RE -> (RE -> IO InnerWord) -> IO InnerWord forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b >>= \RE re -> InnerWord -> IO InnerWord forall (f :: * -> *) a. Applicative f => a -> f a pure (InnerWord -> IO InnerWord) -> InnerWord -> IO InnerWord forall a b. (a -> b) -> a -> b $ InnerWord -> RE -> Text -> Bool -> InnerWord innerReplace InnerWord w RE re (String -> Text pack String "☆゚・:*:・。,★゚・:*:・。") Bool False mapPeriodCommaExclamationSemicolonToKaomojis :: InnerWord -> IO InnerWord mapPeriodCommaExclamationSemicolonToKaomojis :: InnerWord -> IO InnerWord mapPeriodCommaExclamationSemicolonToKaomojis InnerWord word = do Int n <- (StdGen -> (Int, StdGen)) -> IO Int forall (m :: * -> *) a. MonadIO m => (StdGen -> (a, StdGen)) -> m a getStdRandom ((Int, Int) -> StdGen -> (Int, StdGen) forall a g. (Random a, RandomGen g) => (a, a) -> g -> (a, g) randomR (Int 0, [Text] -> Int forall (t :: * -> *) a. Foldable t => t a -> Int length [Text] faces Int -> Int -> Int forall a. Num a => a -> a -> a - Int 1)) :: IO Int let face :: Text face = [Text] faces [Text] -> Int -> Text forall a. [a] -> Int -> a !! Int n let w :: IO InnerWord w = IO RE periodCommaExclamationSemicolonToKaomojisFirst IO RE -> (RE -> IO InnerWord) -> IO InnerWord forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b >>= \RE re -> InnerWord -> IO InnerWord forall (f :: * -> *) a. Applicative f => a -> f a pure (InnerWord -> IO InnerWord) -> InnerWord -> IO InnerWord forall a b. (a -> b) -> a -> b $ InnerWord -> RE -> (() -> Text) -> Bool -> InnerWord innerReplaceWithFuncSingle InnerWord word RE re (Text -> () -> Text forall a b. a -> b -> a const Text face) Bool False Int n' <- (StdGen -> (Int, StdGen)) -> IO Int forall (m :: * -> *) a. MonadIO m => (StdGen -> (a, StdGen)) -> m a getStdRandom ((Int, Int) -> StdGen -> (Int, StdGen) forall a g. (Random a, RandomGen g) => (a, a) -> g -> (a, g) randomR (Int 0, [Text] -> Int forall (t :: * -> *) a. Foldable t => t a -> Int length [Text] faces Int -> Int -> Int forall a. Num a => a -> a -> a - Int 1)) :: IO Int let face' :: Text face' = [Text] faces [Text] -> Int -> Text forall a. [a] -> Int -> a !! Int n' let re' :: IO RE re' = IO RE periodCommaExclamationSemicolonToKaomojisSecond (\RE r InnerWord w' -> InnerWord -> RE -> (() -> Text) -> Bool -> InnerWord innerReplaceWithFuncSingle InnerWord w' RE r (Text -> () -> Text forall a b. a -> b -> a const Text face') Bool False) (RE -> InnerWord -> InnerWord) -> IO RE -> IO (InnerWord -> InnerWord) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> IO RE re' IO (InnerWord -> InnerWord) -> IO InnerWord -> IO InnerWord forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> IO InnerWord w mapThatToDat :: InnerWord -> IO InnerWord mapThatToDat :: InnerWord -> IO InnerWord mapThatToDat InnerWord word = do InnerWord w <- IO RE thatToDatLower IO RE -> (RE -> IO InnerWord) -> IO InnerWord forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b >>= \RE re -> InnerWord -> IO InnerWord forall (f :: * -> *) a. Applicative f => a -> f a pure (InnerWord -> IO InnerWord) -> InnerWord -> IO InnerWord forall a b. (a -> b) -> a -> b $ InnerWord -> RE -> Text -> Bool -> InnerWord innerReplace InnerWord word RE re (String -> Text pack String "dat") Bool False IO RE thatToDatUpper IO RE -> (RE -> IO InnerWord) -> IO InnerWord forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b >>= \RE re -> InnerWord -> IO InnerWord forall (f :: * -> *) a. Applicative f => a -> f a pure (InnerWord -> IO InnerWord) -> InnerWord -> IO InnerWord forall a b. (a -> b) -> a -> b $ InnerWord -> RE -> Text -> Bool -> InnerWord innerReplace InnerWord w RE re (String -> Text pack String "Dat") Bool False mapThToF :: InnerWord -> IO InnerWord mapThToF :: InnerWord -> IO InnerWord mapThToF InnerWord word = do InnerWord w <- IO RE thToFLower IO RE -> (RE -> IO InnerWord) -> IO InnerWord forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b >>= \RE re -> InnerWord -> IO InnerWord forall (f :: * -> *) a. Applicative f => a -> f a pure (InnerWord -> IO InnerWord) -> InnerWord -> IO InnerWord forall a b. (a -> b) -> a -> b $ InnerWord -> RE -> Text -> Bool -> InnerWord innerReplace InnerWord word RE re (String -> Text pack String "f") Bool False IO RE thToFUpper IO RE -> (RE -> IO InnerWord) -> IO InnerWord forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b >>= \RE re -> InnerWord -> IO InnerWord forall (f :: * -> *) a. Applicative f => a -> f a pure (InnerWord -> IO InnerWord) -> InnerWord -> IO InnerWord forall a b. (a -> b) -> a -> b $ InnerWord -> RE -> Text -> Bool -> InnerWord innerReplace InnerWord w RE re (String -> Text pack String "F") Bool False mapLeToWal :: InnerWord -> IO InnerWord mapLeToWal :: InnerWord -> IO InnerWord mapLeToWal InnerWord word = IO RE leToWal IO RE -> (RE -> IO InnerWord) -> IO InnerWord forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b >>= \RE re -> InnerWord -> IO InnerWord forall (f :: * -> *) a. Applicative f => a -> f a pure (InnerWord -> IO InnerWord) -> InnerWord -> IO InnerWord forall a b. (a -> b) -> a -> b $ InnerWord -> RE -> Text -> Bool -> InnerWord innerReplace InnerWord word RE re (String -> Text pack String "wal") Bool False mapVeToWe :: InnerWord -> IO InnerWord mapVeToWe :: InnerWord -> IO InnerWord mapVeToWe InnerWord word = do InnerWord w <- IO RE veToWeLower IO RE -> (RE -> IO InnerWord) -> IO InnerWord forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b >>= \RE re -> InnerWord -> IO InnerWord forall (f :: * -> *) a. Applicative f => a -> f a pure (InnerWord -> IO InnerWord) -> InnerWord -> IO InnerWord forall a b. (a -> b) -> a -> b $ InnerWord -> RE -> Text -> Bool -> InnerWord innerReplace InnerWord word RE re (String -> Text pack String "we") Bool False IO RE veToWeUpper IO RE -> (RE -> IO InnerWord) -> IO InnerWord forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b >>= \RE re -> InnerWord -> IO InnerWord forall (f :: * -> *) a. Applicative f => a -> f a pure (InnerWord -> IO InnerWord) -> InnerWord -> IO InnerWord forall a b. (a -> b) -> a -> b $ InnerWord -> RE -> Text -> Bool -> InnerWord innerReplace InnerWord w RE re (String -> Text pack String "We") Bool False mapRyToWwy :: InnerWord -> IO InnerWord mapRyToWwy :: InnerWord -> IO InnerWord mapRyToWwy InnerWord word = IO RE ryToWwy IO RE -> (RE -> IO InnerWord) -> IO InnerWord forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b >>= \RE re -> InnerWord -> IO InnerWord forall (f :: * -> *) a. Applicative f => a -> f a pure (InnerWord -> IO InnerWord) -> InnerWord -> IO InnerWord forall a b. (a -> b) -> a -> b $ InnerWord -> RE -> Text -> Bool -> InnerWord innerReplace InnerWord word RE re (String -> Text pack String "wwy") Bool False mapROrLToW :: InnerWord -> IO InnerWord mapROrLToW :: InnerWord -> IO InnerWord mapROrLToW InnerWord word = do InnerWord w <- IO RE rOrLToWLower IO RE -> (RE -> IO InnerWord) -> IO InnerWord forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b >>= \RE re -> InnerWord -> IO InnerWord forall (f :: * -> *) a. Applicative f => a -> f a pure (InnerWord -> IO InnerWord) -> InnerWord -> IO InnerWord forall a b. (a -> b) -> a -> b $ InnerWord -> RE -> Text -> Bool -> InnerWord innerReplace InnerWord word RE re (String -> Text pack String "w") Bool False IO RE rOrLToWUpper IO RE -> (RE -> IO InnerWord) -> IO InnerWord forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b >>= \RE re -> InnerWord -> IO InnerWord forall (f :: * -> *) a. Applicative f => a -> f a pure (InnerWord -> IO InnerWord) -> InnerWord -> IO InnerWord forall a b. (a -> b) -> a -> b $ InnerWord -> RE -> Text -> Bool -> InnerWord innerReplace InnerWord w RE re (String -> Text pack String "W") Bool False mapLlToWw :: InnerWord -> IO InnerWord mapLlToWw :: InnerWord -> IO InnerWord mapLlToWw InnerWord word = IO RE llToWw IO RE -> (RE -> IO InnerWord) -> IO InnerWord forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b >>= \RE re -> InnerWord -> IO InnerWord forall (f :: * -> *) a. Applicative f => a -> f a pure (InnerWord -> IO InnerWord) -> InnerWord -> IO InnerWord forall a b. (a -> b) -> a -> b $ InnerWord -> RE -> Text -> Bool -> InnerWord innerReplace InnerWord word RE re (String -> Text pack String "ww") Bool False mapVowelOrRExceptOLToWl :: InnerWord -> IO InnerWord mapVowelOrRExceptOLToWl :: InnerWord -> IO InnerWord mapVowelOrRExceptOLToWl InnerWord word = do InnerWord w <- IO RE vowelOrRExceptOLToWlLower IO RE -> (RE -> IO InnerWord) -> IO InnerWord forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b >>= \RE re -> InnerWord -> IO InnerWord forall (f :: * -> *) a. Applicative f => a -> f a pure (InnerWord -> IO InnerWord) -> InnerWord -> IO InnerWord forall a b. (a -> b) -> a -> b $ InnerWord -> RE -> Text -> Bool -> InnerWord innerReplace InnerWord word RE re (String -> Text pack String "wl") Bool False IO RE vowelOrRExceptOLToWlUpper IO RE -> (RE -> IO InnerWord) -> IO InnerWord forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b >>= \RE re -> InnerWord -> IO InnerWord forall (f :: * -> *) a. Applicative f => a -> f a pure (InnerWord -> IO InnerWord) -> InnerWord -> IO InnerWord forall a b. (a -> b) -> a -> b $ InnerWord -> RE -> Text -> Bool -> InnerWord innerReplace InnerWord w RE re (String -> Text pack String "W$1") Bool False mapOldToOwld :: InnerWord -> IO InnerWord mapOldToOwld :: InnerWord -> IO InnerWord mapOldToOwld InnerWord word = do InnerWord w <- IO RE oldToOwldLower IO RE -> (RE -> IO InnerWord) -> IO InnerWord forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b >>= \RE re -> InnerWord -> IO InnerWord forall (f :: * -> *) a. Applicative f => a -> f a pure (InnerWord -> IO InnerWord) -> InnerWord -> IO InnerWord forall a b. (a -> b) -> a -> b $ InnerWord -> RE -> Text -> Bool -> InnerWord innerReplace InnerWord word RE re (String -> Text pack String "$1wld") Bool False IO RE oldToOwldUpper IO RE -> (RE -> IO InnerWord) -> IO InnerWord forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b >>= \RE re -> InnerWord -> IO InnerWord forall (f :: * -> *) a. Applicative f => a -> f a pure (InnerWord -> IO InnerWord) -> InnerWord -> IO InnerWord forall a b. (a -> b) -> a -> b $ InnerWord -> RE -> Text -> Bool -> InnerWord innerReplace InnerWord w RE re (String -> Text pack String "OWLD") Bool False mapOlToOwl :: InnerWord -> IO InnerWord mapOlToOwl :: InnerWord -> IO InnerWord mapOlToOwl InnerWord word = do InnerWord w <- IO RE olToOwlLower IO RE -> (RE -> IO InnerWord) -> IO InnerWord forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b >>= \RE re -> InnerWord -> IO InnerWord forall (f :: * -> *) a. Applicative f => a -> f a pure (InnerWord -> IO InnerWord) -> InnerWord -> IO InnerWord forall a b. (a -> b) -> a -> b $ InnerWord -> RE -> Text -> Bool -> InnerWord innerReplace InnerWord word RE re (String -> Text pack String "$1wl") Bool False IO RE olToOwlUpper IO RE -> (RE -> IO InnerWord) -> IO InnerWord forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b >>= \RE re -> InnerWord -> IO InnerWord forall (f :: * -> *) a. Applicative f => a -> f a pure (InnerWord -> IO InnerWord) -> InnerWord -> IO InnerWord forall a b. (a -> b) -> a -> b $ InnerWord -> RE -> Text -> Bool -> InnerWord innerReplace InnerWord w RE re (String -> Text pack String "OWL") Bool False mapLOrROToWo :: InnerWord -> IO InnerWord mapLOrROToWo :: InnerWord -> IO InnerWord mapLOrROToWo InnerWord word = do InnerWord w <- IO RE lOrROToWoLower IO RE -> (RE -> IO InnerWord) -> IO InnerWord forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b >>= \RE re -> InnerWord -> IO InnerWord forall (f :: * -> *) a. Applicative f => a -> f a pure (InnerWord -> IO InnerWord) -> InnerWord -> IO InnerWord forall a b. (a -> b) -> a -> b $ InnerWord -> RE -> Text -> Bool -> InnerWord innerReplace InnerWord word RE re (String -> Text pack String "wo") Bool False IO RE lOrROToWoUpper IO RE -> (RE -> IO InnerWord) -> IO InnerWord forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b >>= \RE re -> InnerWord -> IO InnerWord forall (f :: * -> *) a. Applicative f => a -> f a pure (InnerWord -> IO InnerWord) -> InnerWord -> IO InnerWord forall a b. (a -> b) -> a -> b $ InnerWord -> RE -> Text -> Bool -> InnerWord innerReplace InnerWord w RE re (String -> Text pack String "W$1") Bool False mapSpecificConsonantsOToLetterAndWo :: InnerWord -> IO InnerWord mapSpecificConsonantsOToLetterAndWo :: InnerWord -> IO InnerWord mapSpecificConsonantsOToLetterAndWo InnerWord word = do InnerWord w <- IO RE specificConsonantsOToLetterAndWoLower IO RE -> (RE -> IO InnerWord) -> IO InnerWord forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b >>= \RE re -> InnerWord -> IO InnerWord forall (f :: * -> *) a. Applicative f => a -> f a pure (InnerWord -> IO InnerWord) -> InnerWord -> IO InnerWord forall a b. (a -> b) -> a -> b $ InnerWord -> RE -> Text -> Bool -> InnerWord innerReplace InnerWord word RE re (String -> Text pack String "$1wo") Bool False IO RE specificConsonantsOToLetterAndWoUpper IO RE -> (RE -> IO InnerWord) -> IO InnerWord forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b >>= \RE re -> InnerWord -> IO InnerWord forall (f :: * -> *) a. Applicative f => a -> f a pure (InnerWord -> IO InnerWord) -> InnerWord -> IO InnerWord forall a b. (a -> b) -> a -> b $ InnerWord -> RE -> (Text -> Text -> Text) -> Bool -> InnerWord innerReplaceWithFuncMultiple InnerWord w RE re (\Text c1 Text c2 -> Text c1 Text -> Text -> Text forall a. Semigroup a => a -> a -> a <> (if Text -> Text toUpper Text c2 Text -> Text -> Bool forall a. Eq a => a -> a -> Bool == Text c2 then String -> Text pack String "W" else String -> Text pack String "w") Text -> Text -> Text forall a. Semigroup a => a -> a -> a <> Text c2) Bool False mapVOrWLeToWal :: InnerWord -> IO InnerWord mapVOrWLeToWal :: InnerWord -> IO InnerWord mapVOrWLeToWal InnerWord word = IO RE vOrWLeToWal IO RE -> (RE -> IO InnerWord) -> IO InnerWord forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b >>= \RE re -> InnerWord -> IO InnerWord forall (f :: * -> *) a. Applicative f => a -> f a pure (InnerWord -> IO InnerWord) -> InnerWord -> IO InnerWord forall a b. (a -> b) -> a -> b $ InnerWord -> RE -> Text -> Bool -> InnerWord innerReplace InnerWord word RE re (String -> Text pack String "wal") Bool False mapFiToFwi :: InnerWord -> IO InnerWord mapFiToFwi :: InnerWord -> IO InnerWord mapFiToFwi InnerWord word = do InnerWord w <- IO RE fiToFwiLower IO RE -> (RE -> IO InnerWord) -> IO InnerWord forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b >>= \RE re -> InnerWord -> IO InnerWord forall (f :: * -> *) a. Applicative f => a -> f a pure (InnerWord -> IO InnerWord) -> InnerWord -> IO InnerWord forall a b. (a -> b) -> a -> b $ InnerWord -> RE -> Text -> Bool -> InnerWord innerReplace InnerWord word RE re (String -> Text pack String "$1wi") Bool False IO RE fiToFwiUpper IO RE -> (RE -> IO InnerWord) -> IO InnerWord forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b >>= \RE re -> InnerWord -> IO InnerWord forall (f :: * -> *) a. Applicative f => a -> f a pure (InnerWord -> IO InnerWord) -> InnerWord -> IO InnerWord forall a b. (a -> b) -> a -> b $ InnerWord -> RE -> Text -> Bool -> InnerWord innerReplace InnerWord w RE re (String -> Text pack String "FWI") Bool False mapVerToWer :: InnerWord -> IO InnerWord mapVerToWer :: InnerWord -> IO InnerWord mapVerToWer InnerWord word = IO RE verToWer IO RE -> (RE -> IO InnerWord) -> IO InnerWord forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b >>= \RE re -> InnerWord -> IO InnerWord forall (f :: * -> *) a. Applicative f => a -> f a pure (InnerWord -> IO InnerWord) -> InnerWord -> IO InnerWord forall a b. (a -> b) -> a -> b $ InnerWord -> RE -> Text -> Bool -> InnerWord innerReplace InnerWord word RE re (String -> Text pack String "wer") Bool False mapPoiToPwoi :: InnerWord -> IO InnerWord mapPoiToPwoi :: InnerWord -> IO InnerWord mapPoiToPwoi InnerWord word = IO RE poiToPwoi IO RE -> (RE -> IO InnerWord) -> IO InnerWord forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b >>= \RE re -> InnerWord -> IO InnerWord forall (f :: * -> *) a. Applicative f => a -> f a pure (InnerWord -> IO InnerWord) -> InnerWord -> IO InnerWord forall a b. (a -> b) -> a -> b $ InnerWord -> RE -> Text -> Bool -> InnerWord innerReplace InnerWord word RE re (String -> Text pack String "$1woi") Bool False mapSpecificConsonantsLeToLetterAndWal :: InnerWord -> IO InnerWord mapSpecificConsonantsLeToLetterAndWal :: InnerWord -> IO InnerWord mapSpecificConsonantsLeToLetterAndWal InnerWord word = IO RE specificConsonantsLeToLetterAndWal IO RE -> (RE -> IO InnerWord) -> IO InnerWord forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b >>= \RE re -> InnerWord -> IO InnerWord forall (f :: * -> *) a. Applicative f => a -> f a pure (InnerWord -> IO InnerWord) -> InnerWord -> IO InnerWord forall a b. (a -> b) -> a -> b $ InnerWord -> RE -> Text -> Bool -> InnerWord innerReplace InnerWord word RE re (String -> Text pack String "$1wal") Bool False mapConsonantRToConsonantW :: InnerWord -> IO InnerWord mapConsonantRToConsonantW :: InnerWord -> IO InnerWord mapConsonantRToConsonantW InnerWord word = IO RE consonantRToConsonantW IO RE -> (RE -> IO InnerWord) -> IO InnerWord forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b >>= \RE re -> InnerWord -> IO InnerWord forall (f :: * -> *) a. Applicative f => a -> f a pure (InnerWord -> IO InnerWord) -> InnerWord -> IO InnerWord forall a b. (a -> b) -> a -> b $ InnerWord -> RE -> Text -> Bool -> InnerWord innerReplace InnerWord word RE re (String -> Text pack String "$1w") Bool False mapLyToWy :: InnerWord -> IO InnerWord mapLyToWy :: InnerWord -> IO InnerWord mapLyToWy InnerWord word = do InnerWord w <- IO RE lyToWyLower IO RE -> (RE -> IO InnerWord) -> IO InnerWord forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b >>= \RE re -> InnerWord -> IO InnerWord forall (f :: * -> *) a. Applicative f => a -> f a pure (InnerWord -> IO InnerWord) -> InnerWord -> IO InnerWord forall a b. (a -> b) -> a -> b $ InnerWord -> RE -> Text -> Bool -> InnerWord innerReplace InnerWord word RE re (String -> Text pack String "wy") Bool False IO RE lyToWyUpper IO RE -> (RE -> IO InnerWord) -> IO InnerWord forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b >>= \RE re -> InnerWord -> IO InnerWord forall (f :: * -> *) a. Applicative f => a -> f a pure (InnerWord -> IO InnerWord) -> InnerWord -> IO InnerWord forall a b. (a -> b) -> a -> b $ InnerWord -> RE -> Text -> Bool -> InnerWord innerReplace InnerWord w RE re (String -> Text pack String "Wy") Bool False mapPleToPwe :: InnerWord -> IO InnerWord mapPleToPwe :: InnerWord -> IO InnerWord mapPleToPwe InnerWord word = IO RE pleToPwe IO RE -> (RE -> IO InnerWord) -> IO InnerWord forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b >>= \RE re -> InnerWord -> IO InnerWord forall (f :: * -> *) a. Applicative f => a -> f a pure (InnerWord -> IO InnerWord) -> InnerWord -> IO InnerWord forall a b. (a -> b) -> a -> b $ InnerWord -> RE -> Text -> Bool -> InnerWord innerReplace InnerWord word RE re (String -> Text pack String "$1we") Bool False mapNrToNw :: InnerWord -> IO InnerWord mapNrToNw :: InnerWord -> IO InnerWord mapNrToNw InnerWord word = do InnerWord w <- IO RE nrToNwLower IO RE -> (RE -> IO InnerWord) -> IO InnerWord forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b >>= \RE re -> InnerWord -> IO InnerWord forall (f :: * -> *) a. Applicative f => a -> f a pure (InnerWord -> IO InnerWord) -> InnerWord -> IO InnerWord forall a b. (a -> b) -> a -> b $ InnerWord -> RE -> Text -> Bool -> InnerWord innerReplace InnerWord word RE re (String -> Text pack String "nw") Bool False IO RE nrToNwUpper IO RE -> (RE -> IO InnerWord) -> IO InnerWord forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b >>= \RE re -> InnerWord -> IO InnerWord forall (f :: * -> *) a. Applicative f => a -> f a pure (InnerWord -> IO InnerWord) -> InnerWord -> IO InnerWord forall a b. (a -> b) -> a -> b $ InnerWord -> RE -> Text -> Bool -> InnerWord innerReplace InnerWord w RE re (String -> Text pack String "NW") Bool False mapFucToFwuc :: InnerWord -> IO InnerWord mapFucToFwuc :: InnerWord -> IO InnerWord mapFucToFwuc InnerWord word = IO RE funcToFwuc IO RE -> (RE -> IO InnerWord) -> IO InnerWord forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b >>= \RE re -> InnerWord -> IO InnerWord forall (f :: * -> *) a. Applicative f => a -> f a pure (InnerWord -> IO InnerWord) -> InnerWord -> IO InnerWord forall a b. (a -> b) -> a -> b $ InnerWord -> RE -> Text -> Bool -> InnerWord innerReplace InnerWord word RE re (String -> Text pack String "$1wuc") Bool False mapMomToMwom :: InnerWord -> IO InnerWord mapMomToMwom :: InnerWord -> IO InnerWord mapMomToMwom InnerWord word = IO RE momToMwom IO RE -> (RE -> IO InnerWord) -> IO InnerWord forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b >>= \RE re -> InnerWord -> IO InnerWord forall (f :: * -> *) a. Applicative f => a -> f a pure (InnerWord -> IO InnerWord) -> InnerWord -> IO InnerWord forall a b. (a -> b) -> a -> b $ InnerWord -> RE -> Text -> Bool -> InnerWord innerReplace InnerWord word RE re (String -> Text pack String "$1wom") Bool False mapMeToMwe :: InnerWord -> IO InnerWord mapMeToMwe :: InnerWord -> IO InnerWord mapMeToMwe InnerWord word = IO RE meToMwe IO RE -> (RE -> IO InnerWord) -> IO InnerWord forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b >>= \RE re -> InnerWord -> IO InnerWord forall (f :: * -> *) a. Applicative f => a -> f a pure (InnerWord -> IO InnerWord) -> InnerWord -> IO InnerWord forall a b. (a -> b) -> a -> b $ InnerWord -> RE -> Text -> Bool -> InnerWord innerReplace InnerWord word RE re (String -> Text pack String "$1we") Bool False mapNVowelToNy :: InnerWord -> IO InnerWord mapNVowelToNy :: InnerWord -> IO InnerWord mapNVowelToNy InnerWord word = do InnerWord w <- IO RE nVowelToNyFirst IO RE -> (RE -> IO InnerWord) -> IO InnerWord forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b >>= \RE re -> InnerWord -> IO InnerWord forall (f :: * -> *) a. Applicative f => a -> f a pure (InnerWord -> IO InnerWord) -> InnerWord -> IO InnerWord forall a b. (a -> b) -> a -> b $ InnerWord -> RE -> Text -> Bool -> InnerWord innerReplace InnerWord word RE re (String -> Text pack String "ny$1") Bool False InnerWord w' <- IO RE nVowelToNySecond IO RE -> (RE -> IO InnerWord) -> IO InnerWord forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b >>= \RE re -> InnerWord -> IO InnerWord forall (f :: * -> *) a. Applicative f => a -> f a pure (InnerWord -> IO InnerWord) -> InnerWord -> IO InnerWord forall a b. (a -> b) -> a -> b $ InnerWord -> RE -> Text -> Bool -> InnerWord innerReplace InnerWord w RE re (String -> Text pack String "Ny$1") Bool False IO RE nVowelToNyThird IO RE -> (RE -> IO InnerWord) -> IO InnerWord forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b >>= \RE re -> InnerWord -> IO InnerWord forall (f :: * -> *) a. Applicative f => a -> f a pure (InnerWord -> IO InnerWord) -> InnerWord -> IO InnerWord forall a b. (a -> b) -> a -> b $ InnerWord -> RE -> Text -> Bool -> InnerWord innerReplace InnerWord w' RE re (String -> Text pack String "NY$1") Bool False mapOveToUv :: InnerWord -> IO InnerWord mapOveToUv :: InnerWord -> IO InnerWord mapOveToUv InnerWord word = do InnerWord w <- IO RE oveToUvLower IO RE -> (RE -> IO InnerWord) -> IO InnerWord forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b >>= \RE re -> InnerWord -> IO InnerWord forall (f :: * -> *) a. Applicative f => a -> f a pure (InnerWord -> IO InnerWord) -> InnerWord -> IO InnerWord forall a b. (a -> b) -> a -> b $ InnerWord -> RE -> Text -> Bool -> InnerWord innerReplace InnerWord word RE re (String -> Text pack String "uv") Bool False IO RE oveToUvUpper IO RE -> (RE -> IO InnerWord) -> IO InnerWord forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b >>= \RE re -> InnerWord -> IO InnerWord forall (f :: * -> *) a. Applicative f => a -> f a pure (InnerWord -> IO InnerWord) -> InnerWord -> IO InnerWord forall a b. (a -> b) -> a -> b $ InnerWord -> RE -> Text -> Bool -> InnerWord innerReplace InnerWord w RE re (String -> Text pack String "UV") Bool False mapHahaToHeheXd :: InnerWord -> IO InnerWord mapHahaToHeheXd :: InnerWord -> IO InnerWord mapHahaToHeheXd InnerWord word = IO RE hahaToHeheXd IO RE -> (RE -> IO InnerWord) -> IO InnerWord forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b >>= \RE re -> InnerWord -> IO InnerWord forall (f :: * -> *) a. Applicative f => a -> f a pure (InnerWord -> IO InnerWord) -> InnerWord -> IO InnerWord forall a b. (a -> b) -> a -> b $ InnerWord -> RE -> Text -> Bool -> InnerWord innerReplace InnerWord word RE re (String -> Text pack String "hehe xD") Bool False mapTheToTeh :: InnerWord -> IO InnerWord mapTheToTeh :: InnerWord -> IO InnerWord mapTheToTeh InnerWord word = IO RE theToTeh IO RE -> (RE -> IO InnerWord) -> IO InnerWord forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b >>= \RE re -> InnerWord -> IO InnerWord forall (f :: * -> *) a. Applicative f => a -> f a pure (InnerWord -> IO InnerWord) -> InnerWord -> IO InnerWord forall a b. (a -> b) -> a -> b $ InnerWord -> RE -> Text -> Bool -> InnerWord innerReplace InnerWord word RE re (String -> Text pack String "$1eh") Bool False mapYouToU :: InnerWord -> IO InnerWord mapYouToU :: InnerWord -> IO InnerWord mapYouToU InnerWord word = do InnerWord w <- IO RE youToUUpper IO RE -> (RE -> IO InnerWord) -> IO InnerWord forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b >>= \RE re -> InnerWord -> IO InnerWord forall (f :: * -> *) a. Applicative f => a -> f a pure (InnerWord -> IO InnerWord) -> InnerWord -> IO InnerWord forall a b. (a -> b) -> a -> b $ InnerWord -> RE -> Text -> Bool -> InnerWord innerReplace InnerWord word RE re (String -> Text pack String "U") Bool False IO RE youToULower IO RE -> (RE -> IO InnerWord) -> IO InnerWord forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b >>= \RE re -> InnerWord -> IO InnerWord forall (f :: * -> *) a. Applicative f => a -> f a pure (InnerWord -> IO InnerWord) -> InnerWord -> IO InnerWord forall a b. (a -> b) -> a -> b $ InnerWord -> RE -> Text -> Bool -> InnerWord innerReplace InnerWord w RE re (String -> Text pack String "u") Bool False mapTimeToTim :: InnerWord -> IO InnerWord mapTimeToTim :: InnerWord -> IO InnerWord mapTimeToTim InnerWord word = IO RE timeToTim IO RE -> (RE -> IO InnerWord) -> IO InnerWord forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b >>= \RE re -> InnerWord -> IO InnerWord forall (f :: * -> *) a. Applicative f => a -> f a pure (InnerWord -> IO InnerWord) -> InnerWord -> IO InnerWord forall a b. (a -> b) -> a -> b $ InnerWord -> RE -> Text -> Bool -> InnerWord innerReplace InnerWord word RE re (String -> Text pack String "$1im") Bool False mapOverToOwor :: InnerWord -> IO InnerWord mapOverToOwor :: InnerWord -> IO InnerWord mapOverToOwor InnerWord word = IO RE overToOwor IO RE -> (RE -> IO InnerWord) -> IO InnerWord forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b >>= \RE re -> InnerWord -> IO InnerWord forall (f :: * -> *) a. Applicative f => a -> f a pure (InnerWord -> IO InnerWord) -> InnerWord -> IO InnerWord forall a b. (a -> b) -> a -> b $ InnerWord -> RE -> Text -> Bool -> InnerWord innerReplace InnerWord word RE re (String -> Text pack String "$1wor") Bool False mapWorseToWose :: InnerWord -> IO InnerWord mapWorseToWose :: InnerWord -> IO InnerWord mapWorseToWose InnerWord word = IO RE worseToWose IO RE -> (RE -> IO InnerWord) -> IO InnerWord forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b >>= \RE re -> InnerWord -> IO InnerWord forall (f :: * -> *) a. Applicative f => a -> f a pure (InnerWord -> IO InnerWord) -> InnerWord -> IO InnerWord forall a b. (a -> b) -> a -> b $ InnerWord -> RE -> Text -> Bool -> InnerWord innerReplace InnerWord word RE re (String -> Text pack String "$1ose") Bool False