phonetic-languages-simplified-examples-array 0.2.2.0 → 0.3.0.0
raw patch · 7 files changed
+184/−57 lines, 7 filesdep −print-infodep ~phonetic-languages-simplified-properties-arraydep ~ukrainian-phonetics-basic-array
Dependencies removed: print-info
Dependency ranges changed: phonetic-languages-simplified-properties-array, ukrainian-phonetics-basic-array
Files
- CHANGELOG.md +6/−1
- Phonetic/Languages/Parsing.hs +75/−0
- Phonetic/Languages/Simple.hs +59/−29
- Phonetic/Languages/Simplified/Array/Ukrainian/FuncRep2RelatedG2.hs +11/−9
- README.md +19/−2
- Simple/Main.hs +4/−6
- phonetic-languages-simplified-examples-array.cabal +10/−10
CHANGELOG.md view
@@ -24,5 +24,10 @@ ## 0.2.2.0 -- 2021-01-20 -* Second version revised B. Removed the unneeded hiden dependencies of the vector related packages and functionality (that was +* Second version revised B. Removed the unneeded hidden dependencies of the vector related packages and functionality (that was announced in the 0.1.2.0 version). Fully switched to the GHC.Arr arrays where needed.++## 0.3.0.0 -- 2021-01-28++* Third version. The package has the multiple variations mode for lineVariantsG3 executable that allows to use modifications in the text, e. g. synonyms, paraphrases etc. Added more variants of the properties based on the new dataset for+r-glpk-phonetic-languages-ukrainian-durations package. Added a new module Phonetic.Languages.Parsing for the new functionality. Removed unneeded print-info dependency.
+ Phonetic/Languages/Parsing.hs view
@@ -0,0 +1,75 @@+{-# OPTIONS_GHC -threaded -rtsopts #-}+{-# OPTIONS_HADDOCK show-extensions #-}+{-# LANGUAGE BangPatterns #-}++-- |+-- Module : Phonetic.Languages.Parsing+-- Copyright : (c) OleksandrZhabenko 2021+-- License : MIT+-- Stability : Experimental+-- Maintainer : olexandr543@yahoo.com+--+-- The additional parsing library functions for the lineVariantsG3 executable.+-- @ since 0.3.0.0+-- ++module Phonetic.Languages.Parsing (+ -- * Predicates+ isClosingCurlyBracket+ , isSlash+ , isOpeningCurlyBracket+ , variations+ -- * Transformations+ , breakGroupOfStrings+ , breakInSlashes+ , combineVariants+ , combineHeadsWithNexts+ , transformToVariations+) where++isClosingCurlyBracket :: String -> Bool+isClosingCurlyBracket = (== "}")++isSlash :: String -> Bool+isSlash (x:xs)+ | x /= '/' = False+ | null xs = True+ | otherwise = False+isSlash _ = False++isOpeningCurlyBracket :: String -> Bool+isOpeningCurlyBracket = (== "{")++breakGroupOfStrings :: [String] -> (([String],[[String]]),[String])+breakGroupOfStrings !xss = ((tss,breakInSlashes uss []), drop 1 zss)+ where (!yss,!zss) = break isClosingCurlyBracket xss+ (!tss,!uss) = (\(t1,t2) -> (t1,drop 1 t2)) . break isOpeningCurlyBracket $ yss++breakInSlashes :: [String] -> [[String]] -> [[String]]+breakInSlashes !wss !usss+ | null lss = kss : usss+ | otherwise = breakInSlashes (drop 1 lss) (kss : usss)+ where (!kss,!lss) = break isSlash wss++combineVariants :: ([String],[[String]]) -> [[String]]+combineVariants (!xss, (!yss:ysss)) = (xss `mappend` yss) : combineVariants (xss, ysss)+combineVariants _ = []++combineHeadsWithNexts :: [[String]] -> [String] -> [[String]]+combineHeadsWithNexts !xsss !yss+ | null yss = xsss+ | otherwise = combineHeadsWithNexts [xss `mappend` zss | xss <- xsss, zss <- zsss] uss+ where (!t,!uss) = breakGroupOfStrings yss+ !zsss = combineVariants t++transformToVariations :: [String] -> [[String]]+transformToVariations !yss+ | null yss = []+ | otherwise = combineHeadsWithNexts xsss tss+ where (!y,!tss) = breakGroupOfStrings yss+ !xsss = combineVariants y++variations :: [String] -> Bool+variations xss + | any isSlash xss = if any isOpeningCurlyBracket xss && any isClosingCurlyBracket xss then True else False+ | otherwise = False
Phonetic/Languages/Simple.hs view
@@ -13,6 +13,7 @@ module Phonetic.Languages.Simple where +import Phonetic.Languages.Parsing import Numeric import Languages.UniquenessPeriods.Array.Constraints.Encoded (decodeLConstraints,readMaybeECG) import GHC.Arr@@ -20,13 +21,11 @@ import Phonetic.Languages.Array.Ukrainian.PropertiesSyllablesG2 import Phonetic.Languages.Filters (unsafeSwapVecIWithMaxI) import Phonetic.Languages.Simplified.StrictVG.Base-import Phonetic.Languages.Ukrainian.PrepareText import Data.Char (isDigit,isAlpha) import qualified Data.List as L (span,sort,zip4,isPrefixOf,nub) import Phonetic.Languages.Simplified.Array.Ukrainian.FuncRep2RelatedG2 import Phonetic.Languages.Permutations.Arr import Data.SubG hiding (takeWhile,dropWhile)-import System.Environment import Data.Maybe import Data.MinMax.Preconditions import Text.Read (readMaybe)@@ -42,8 +41,28 @@ (yss,zss) = splitAt l xss forMultiplePropertiesF _ = [] -generalProc2 :: FilePath -> Bool -> Bool -> [String] -> Coeffs2 -> [String] -> Bool -> IO ()-generalProc2 toFile1 interactive jstL0 args0 coeffs args lstW2 = do+-- |+-- @ since 0.3.0.0+-- Is used to do general processment.+generalProc2G :: FilePath -> Bool -> Bool -> [String] -> Coeffs2 -> [String] -> Bool -> IO ()+generalProc2G toFile1 interactive jstL0 args0 coeffs args lstW2+ | variations args = do+ let !zsss = transformToVariations args+ print zsss+ variantsG <- mapM (\xss -> generalProc2 interactive jstL0 args0 coeffs xss lstW2) zsss+ interactivePrintResult id variantsG >>= \rs ->+ case toFile1 of+ "" -> return ()+ ~fileName -> appendFile fileName (rs `mappend` newLineEnding)+ | otherwise = generalProc2 interactive jstL0 args0 coeffs args lstW2 >>= \rs ->+ case toFile1 of+ "" -> return ()+ ~fileName -> appendFile fileName (rs `mappend` newLineEnding)++-- |+-- @ since 0.3.0.0 The result is not 'IO' (), but 'IO' 'String'. The type also changed generally.+generalProc2 :: Bool -> Bool -> [String] -> Coeffs2 -> [String] -> Bool -> IO String+generalProc2 interactive jstL0 args0 coeffs args lstW2 = do let !argMss = take 5 . filter (not . null) . forMultiplePropertiesF . drop 1 . dropWhile (/= "+M") . takeWhile (/= "-M") $ args0 if null argMss then do let (!numericArgs,!textualArgs) = L.span (all isDigit) $ args@@ -56,18 +75,18 @@ !intervalNmbrs = (\zs -> if null zs then [numberI] else L.nub zs) . L.sort . filter (<= numberI) . map (\t -> fromMaybe numberI $ (readMaybe t::Maybe Int)) . drop 2 $ numericArgs if compare l 2 == LT then let !frep20 = chooseMax id coeffs choice in let !wwss = (:[]) . toResultR frep20 $ xs in- if interactive then interactivePrintResult line toFile1 wwss else print1el jstL0 choice wwss+ if interactive then interactivePrintResult line wwss else print1el jstL0 choice wwss else do let !subs = subG " 01-" xs if null argCs then let !perms = genPermutationsL l in do temp <- generalProcMs coeffs perms subs (intervalNmbrs, arg0, numberI, choice)- if interactive then interactivePrintResult line toFile1 temp else print1el jstL0 choice temp+ if interactive then interactivePrintResult line temp else print1el jstL0 choice temp else do correct <- printWarning xs- if correct == "n" then putStrLn "You stopped the program, please, if needed, run it again with better arguments. "+ if correct == "n" then putStrLn "You stopped the program, please, if needed, run it again with better arguments. " >> return "" -- for the multiple variations mode (with curly brackets and slash in the text) the program does not stop here, but the variation is made empty and is proposed further as a variant. else let !perms = decodeLConstraints argCs . genPermutationsL $ l in do temp <- generalProcMs coeffs perms subs (intervalNmbrs, arg0, numberI, choice)- if interactive then interactivePrintResult line toFile1 temp else print1el jstL0 choice temp+ if interactive then interactivePrintResult line temp else print1el jstL0 choice temp else do let !choices = map fst argMss !numericArgss = map snd argMss@@ -80,18 +99,20 @@ !xs = concat . take 1 . fLines 0 . unwords $ args !l = length . words $ xs !argCs = catMaybes (fmap (readMaybeECG (l - 1)) . (showB l lstW2:) . drop 1 . dropWhile (/= "+A") . takeWhile (/= "-A") $ args0)- if compare l 2 == LT then let !frep20 = chooseMax id coeffs (concat . take 1 $ choices) in let !wwss = (:[]) . toResultR frep20 $ xs in if interactive then interactivePrintResult line toFile1 wwss else print1el jstL0 (concat . take 1 $ choices) wwss+ if compare l 2 == LT then let !frep20 = chooseMax id coeffs (concat . take 1 $ choices) in let !wwss = (:[]) . toResultR frep20 $ xs in if interactive then interactivePrintResult line wwss else print1el jstL0 (concat . take 1 $ choices) wwss else do let !subs = subG " 01-" xs- if null argCs then let !perms = genPermutationsL l in generalProcMMs interactive toFile1 coeffs argsZipped perms subs+ if null argCs then let !perms = genPermutationsL l in generalProcMMs interactive coeffs argsZipped perms subs else do correct <- printWarning xs- if correct == "n" then putStrLn "You stopped the program, please, if needed, run it again with better arguments. "- else let !perms = decodeLConstraints argCs . genPermutationsL $ l in generalProcMMs interactive toFile1 coeffs argsZipped perms subs+ if correct == "n" then putStrLn "You stopped the program, please, if needed, run it again with better arguments. " >> return "" -- for the multiple variations mode (with curly brackets and slash in the text) the program does not stop here, but the variation is made empty and is proposed further as a variant.+ else let !perms = decodeLConstraints argCs . genPermutationsL $ l in generalProcMMs interactive coeffs argsZipped perms subs -interactivePrintResult :: (a -> String) -> String -> [a] -> IO ()-interactivePrintResult f ys xss- | null xss = putStrLn ""+-- |+-- @ since 0.3.0.0 The result is not 'IO' (), but 'IO' 'String'. The type also changed generally.+interactivePrintResult :: (a -> String) -> [a] -> IO String+interactivePrintResult f xss+ | null xss = putStrLn "" >> return "" | otherwise = do let !datas = map (\(idx,str) -> show idx `mappend` ('\t' : str)) . trans232 . map f $ xss mapM_ putStrLn datas@@ -99,8 +120,9 @@ putStrLn "Please, specify the variant which you would like to become the resulting string by its number. " number <- getLine let !lineRes = concat . filter ((number `mappend` "\t")`L.isPrefixOf`) $ datas- (\xs -> if null ys then putStrLn xs else putStrLn xs >> appendFile ys (xs `mappend` newLineEnding)) . drop 1 . dropWhile (/= '\t') $ lineRes-+ !ts = drop 1 . dropWhile (/= '\t') $ lineRes+ putStrLn ts >> return ts+ printWarning :: String -> IO String printWarning xs = do putStr "Please, check whether the line below corresponds and is consistent with the constraints you have specified between the +A and -A options. "@@ -121,28 +143,36 @@ !frep2 = chooseMax (unsafeSwapVecIWithMaxI minE maxE numberI intervalNmbrs) coeffs choice return . fst . maximumGroupsClassificationR arg0 . map (toResultR frep2) $ variants1 -generalProcMMs :: Bool -> FilePath -> Coeffs2 -> [([Int],Int,Int,String)] -> [Array Int Int] -> [String] -> IO ()-generalProcMMs interactiveMM file coeffs rs perms subs =+-- |+-- @ since 0.3.0.0 The result is not 'IO' (), but 'IO' 'String'. The type also changed generally.+generalProcMMs :: Bool -> Coeffs2 -> [([Int],Int,Int,String)] -> [Array Int Int] -> [String] -> IO String+generalProcMMs interactiveMM coeffs rs perms subs = case length rs of- 0 -> putStrLn "No data has been specified to control the computation process. "+ 0 -> putStrLn "No data has been specified to control the computation process. " >> return "" 1 -> putStrLn "You have specified just one variant of the metrices. " >> do temp <- generalProcMs coeffs perms subs (head rs)- finalProc interactiveMM file line temp+ finalProc interactiveMM line temp _ -> do genVariants <- mapM (generalProcMs coeffs perms subs) rs- finalProc interactiveMM file id . foldlI . map (map line) $ genVariants+ finalProc interactiveMM id . foldlI . map (map line) $ genVariants foldlI :: [[String]] -> [String] foldlI (xs:ys:xss) = foldlI (intersectInterResults xs ys : xss) foldlI (xs:_) = xs foldlI _ = [] -finalProc :: Bool -> FilePath -> (a -> String) -> [a] -> IO ()-finalProc bool ys f xss = if bool then interactivePrintResult f ys xss else mapM_ (putStrLn . f) xss+-- |+-- @ since 0.3.0.0 The result is not 'IO' (), but 'IO' 'String'. The type also changed generally.+finalProc :: Bool -> (a -> String) -> [a] -> IO String+finalProc bool f xss = if bool then interactivePrintResult f xss else putStrLn ts >> return ts+ where ts = concatMap (\t -> f t `mappend` newLineEnding) xss -print1el :: Bool -> String -> [Result [] Char Double Double] -> IO ()-print1el jstlines choice (x:xs)- | jstlines == True = putStrLn (line x) >> print1el True choice xs- | otherwise = putStrLn (line x) >> putStrLn (showFFloat ch (propertiesF x) "") >> putStrLn (showFFloat ch (transPropertiesF x) "") >> print1el False choice xs+-- |+-- @ since 0.3.0.0 The result is not 'IO' (), but 'IO' 'String'. The type also changed generally.+print1el :: Bool -> String -> [Result [] Char Double Double] -> IO String+print1el jstlines choice y+ | jstlines == True = putStrLn us >> return us+ | otherwise = putStrLn zs >> return zs where !ch = precChoice choice-print1el _ _ _ = return ()+ !us = concatMap (\ys -> line ys `mappend` newLineEnding) y+ !zs = concatMap (\ys -> line ys `mappend` newLineEnding `mappend` showFFloat ch (propertiesF ys) (newLineEnding `mappend` showFFloat ch (transPropertiesF ys) newLineEnding)) y
Phonetic/Languages/Simplified/Array/Ukrainian/FuncRep2RelatedG2.hs view
@@ -19,15 +19,17 @@ -- | Allows to choose the variant of the computations in case of usual processment. chooseMax :: (Ord c) => (Double -> c) -> Coeffs2 -> String -> FuncRep2 String Double c chooseMax g coeffs choice- | isPair coeffs = getBFstL' (procBoth3InvF g coeffs) [("02y",procRhythmicity23F g "02y" coeffs),- ("03y",procRhythmicity23F g "03y" coeffs), ("0y",procRhythmicity23F g "0y" coeffs),- ("y",procBothF g coeffs),("y0",procDiverse2F g),("y2",procBoth2F g coeffs),("y3",procBoth3F g coeffs),- ("yy",procBothInvF g coeffs),("yy2",procBoth2InvF g coeffs)] choice- | otherwise = getBFstL' (procBoth3InvF g coeffs) [("02y",procRhythmicity23F g "02y" coeffs),- ("03y",procRhythmicity23F g "03y" coeffs),("0y",procRhythmicity23F g "0y" coeffs),- ("y",procBothF g coeffs),("y0",procDiverse2F g),("y2",procBoth2F g coeffs),("y3",procBoth3F g coeffs),- ("yy",procBothInvF g coeffs),("yy2",procBoth2InvF g coeffs)] choice+ | isPair coeffs = getBFstL' (procBoth4InvF g coeffs) [("02y",procRhythmicity23F g "02y" coeffs),+ ("03y",procRhythmicity23F g "03y" coeffs), ("04y",procRhythmicity23F g "04y" coeffs),+ ("0y",procRhythmicity23F g "0y" coeffs), ("y",procBothF g coeffs),("y0",procDiverse2F g),+ ("y2",procBoth2F g coeffs),("y3",procBoth3F g coeffs), ("y4",procBoth4F g coeffs), ("yy",procBothInvF g coeffs),+ ("yy2",procBoth2InvF g coeffs),("yy3",procBoth3InvF g coeffs)] choice+ | otherwise = getBFstL' (procBoth4InvF g coeffs) [("02y",procRhythmicity23F g "02y" coeffs),+ ("03y",procRhythmicity23F g "03y" coeffs),("04y",procRhythmicity23F g "04y" coeffs),+ ("0y",procRhythmicity23F g "0y" coeffs), ("y",procBothF g coeffs),("y0",procDiverse2F g),+ ("y2",procBoth2F g coeffs),("y3",procBoth3F g coeffs), ("y4",procBoth4F g coeffs),+ ("yy",procBothInvF g coeffs),("yy2",procBoth2InvF g coeffs),("yy3",procBoth3InvF g coeffs)] choice -- | Allows to choose precision in the Numeric.showFDouble function being given a choice parameter. precChoice :: String -> Maybe Int-precChoice = getBFstL' (Just 4) [("02y",Just 0),("03y",Just 0),("0y",Just 0),("y",Just 0),("y0",Just 0),("y2",Just 0),("y3",Just 0)]+precChoice = getBFstL' (Just 4) [("02y",Just 0),("03y",Just 0),("04y",Just 0),("0y",Just 0),("y",Just 0),("y0",Just 0),("y2",Just 0),("y3",Just 0), ("y4",Just 0)]
README.md view
@@ -1,7 +1,7 @@ The short (possibly) instruction how to use the programs of the package phonetic-languages-simplified-examples-array in Ukrainian is here: -https://web.archive.org/web/20210104162220/https://github.com/OleksandrZhabenko/uk/blob/master/Instruction_phonetic-languages-simplified-examples-array-0.2.0.0.pdf+https://web.archive.org/web/20210127214219/https://oleksandrzhabenko.github.io/uk/Instruction_phonetic-languages-simplified-examples-array-0.3.0.0.pdf Since the version 0.2.0.0 there exist also comparative mode for the rewritePoemG3 executable. It allows to create from two files with the text variants the new one. For more information in Ukrainian, please, refer to the instruction above to the@@ -22,11 +22,28 @@ lineVariantsG3 10.0_1.2 yy2 садок вишневий коло хати хрущі над вишнями гудуть (the Ukrainian text here and further is from the Taras Shevchenko poem) +lineVariantsG3 10.0_1.2 5 5 1 2 04y садок вишневий коло хати хрущі над вишнями гудуть + lineVariantsG3 +M 02y 3 03y 3 y0 10 -M ++BL <Ukrainian text> lineVariantsG3 ++I ++BL 4.3_ +M 02y 3 0y 3 y0 20 y2 40 -M садок вишневий коло хати хрущі над вишнями гудуть -lineVariantsG3 +IF hello.txt -IF ++BL +M 02y 3 0y 3 y0 40 y2 50 -M садок вишневий коло хати хрущі над вишнями гудуть+lineVariantsG3 +IF hello.txt -IF ++BL +M 02y 3 0y 3 04y 5 y0 40 y4 50 -M садок вишневий коло хати хрущі над вишнями гудуть++You can also use multiple variations mode to look at the synonyms, paraphrases etc.++For this, use instead of just the text as the last arguments the following special construction:++{ <variant1 of the Ukrainian text> / <variant2 of the Ukrainian text> / ... / <variantN of the Ukrainian text> }++with at least two variants inside the curly brackets. They will be processed in chain+with the one variant of each and the possibility to choose at the end between+these different ones, which finally results in a single line.++Please, remember that the program provides processing for every combination of the variations+so if you specify too many of them (e. g. 3 variants of one word and 4 variants of the another one will+lead to 3*4 = 12 variations possible), the processing while getting the final result+can become longer than expected. 2) propertiesTextG3:
Simple/Main.hs view
@@ -13,10 +13,8 @@ module Main where -import Languages.UniquenessPeriods.Array.Constraints.Encoded import Phonetic.Languages.Array.Ukrainian.PropertiesSyllablesG2 import System.Environment (getArgs)-import Text.Read (readMaybe) import Phonetic.Languages.Simple -- | Prints the rearrangements with the \"property\" information for the Ukrainian language text. The first command line argument must be a@@ -37,12 +35,12 @@ lstW = if any (\x -> x == "++B" || x == "++BL") args00 then True else False -- If one of the command line options is \"++B\" or \"++BL\" then the last word of the line will remain the last one. jstL0 = if any (\x -> x == "++L" || x == "++BL") args00 then True else False -- If one of the command line options is \"++L\" or \"++BL\" then the program outputs just lines without metrices values. toFileMode1 = concat . take 1 . drop 1 . dropWhile (/= "+IF") . takeWhile (/= "-IF") $ args0 -- Prints the last resulting line of the interactive mode processment (the last selected variant) to the file and also to the stdout.- interactiveP = if any (\xs -> xs == "++I" || xs == "+IF") args00 then True else False -- If one of the command line options is \"++I\", or \"+FIB\", or \"+IF\" then the program prints the variants and then prompts for the preferred variant. Afterwards, it prints just that variant alone.+ interactiveP = if any (\xs -> xs == "++I" || xs == "+IF") args00 then True else False -- If one of the command line options is \"++I\", or \"+IF\" then the program prints the variants and then prompts for the preferred variant. Afterwards, it prints just that variant alone. args01 = takeWhile (/= "+A") args0 `mappend` (drop 1 . dropWhile (/= "-A") $ args0) args02 | null toFileMode1 = filter (\xs -> xs /= "+IF" && xs /= "-IF") args01 | otherwise = takeWhile (/= "+IF") args01 `mappend` (drop 1 . dropWhile (/= "-IF") $ args01) args = takeWhile (/= "+M") args02 `mappend` (drop 1 . dropWhile (/= "-M") $ args02)- coeffs = readCF . concat . take 1 $ args -- The first command line argument. If not sure, just pass \"1_\".- if isPair coeffs then generalProc2 toFileMode1 interactiveP jstL0 args0 coeffs (drop 1 args) lstW- else generalProc2 toFileMode1 interactiveP jstL0 args0 coeffs args lstW+ coeffs = readCF . concat . take 1 $ args -- The first command line argument. + if isPair coeffs then generalProc2G toFileMode1 interactiveP jstL0 args0 coeffs (drop 1 args) lstW+ else generalProc2G toFileMode1 interactiveP jstL0 args0 coeffs args lstW
phonetic-languages-simplified-examples-array.cabal view
@@ -2,9 +2,9 @@ -- further documentation, see http://haskell.org/cabal/users-guide/ name: phonetic-languages-simplified-examples-array-version: 0.2.2.0+version: 0.3.0.0 synopsis: Helps to create Ukrainian texts with the given phonetic properties.-description: Uses more functionality of the arrays and lists. The vector-related functionality is removed and this made the executables and libraries much more lightweight. Deal the Ukrainian as one of the phonetic languages. For the short introduction in English, please, refer to: https://functional-art.org/2020/papers/Poetry-OleksandrZhabenko.pdf.+description: Uses more functionality of the arrays and lists. The vector-related functionality is removed and this made the executables and libraries much more lightweight. Deal the Ukrainian as one of the phonetic languages. For the short introduction in English, please, refer to: https://functional-art.org/2020/papers/Poetry-OleksandrZhabenko.pdf. Since the version 0.3.0.0 the package has the multiple variations mode for @lineVariantsG3@ executable that allows to use modifications in the text, e. g. synonyms, paraphrases etc. homepage: https://hackage.haskell.org/package/phonetic-languages-simplified-examples-array license: MIT license-file: LICENSE@@ -17,36 +17,36 @@ cabal-version: >=1.10 library- exposed-modules: Phonetic.Languages.Simplified.Array.Ukrainian.FuncRep2RelatedG2, Phonetic.Languages.Simple, Phonetic.Languages.Lines, Phonetic.Languages.GetTextualInfo+ exposed-modules: Phonetic.Languages.Simplified.Array.Ukrainian.FuncRep2RelatedG2, Phonetic.Languages.Simple, Phonetic.Languages.Lines, Phonetic.Languages.GetTextualInfo, Phonetic.Languages.Parsing -- other-modules: other-extensions: BangPatterns- build-depends: base >=4.8 && <4.15, ukrainian-phonetics-basic-array >=0.1.1 && <1, phonetic-languages-simplified-base >=0.1 && <1, phonetic-languages-simplified-properties-array >=0.1.1 && <1, phonetic-languages-ukrainian-array >=0.1 && <1, phonetic-languages-filters-array >=0.1 && <1, uniqueness-periods-vector-stats >=0.2.1 && <1, parallel >=3.2.0.6 && <4, phonetic-languages-plus >=0.2 && <1, subG >= 0.4 && < 1, phonetic-languages-rhythmicity >=0.1.2 && <1, phonetic-languages-permutations-array >= 0.1 && <1, heaps >= 0.3.6.1 && <1, phonetic-languages-constraints-array >=0.1 && <1, phonetic-languages-simplified-examples-common >=0.1.1 && <1, mmsyn2-array >= 0.1.1 && <1+ build-depends: base >=4.8 && <4.15, ukrainian-phonetics-basic-array >=0.1.2 && <1, phonetic-languages-simplified-base >=0.1 && <1, phonetic-languages-simplified-properties-array >=0.1.2 && <1, phonetic-languages-ukrainian-array >=0.1 && <1, phonetic-languages-filters-array >=0.1 && <1, uniqueness-periods-vector-stats >=0.2.1 && <1, parallel >=3.2.0.6 && <4, phonetic-languages-plus >=0.2 && <1, subG >= 0.4 && < 1, phonetic-languages-rhythmicity >=0.1.2 && <1, phonetic-languages-permutations-array >= 0.1 && <1, heaps >= 0.3.6.1 && <1, phonetic-languages-constraints-array >=0.1 && <1, phonetic-languages-simplified-examples-common >=0.1.1 && <1, mmsyn2-array >= 0.1.1 && <1 -- hs-source-dirs: default-language: Haskell2010 executable lineVariantsG3 main-is: Main.hs- other-modules: Phonetic.Languages.Simplified.Array.Ukrainian.FuncRep2RelatedG2, Phonetic.Languages.Simple+ other-modules: Phonetic.Languages.Simplified.Array.Ukrainian.FuncRep2RelatedG2, Phonetic.Languages.Simple, Phonetic.Languages.Parsing other-extensions: BangPatterns- build-depends: base >=4.8 && <4.15, ukrainian-phonetics-basic-array >=0.1.1 && <1, phonetic-languages-simplified-base >=0.1 && <1, phonetic-languages-simplified-properties-array >=0.1.1 && <1, print-info >=0.1.3 && <1, phonetic-languages-ukrainian-array >=0.1 && <1, phonetic-languages-filters-array >=0.1 && <1, phonetic-languages-plus >=0.2 && <1, subG >=0.4 && < 1, mmsyn2-array >= 0.1.1 && <1, phonetic-languages-constraints-array >=0.1 && <1, phonetic-languages-permutations-array >= 0.1 && <1, heaps >= 0.3.6.1 && <1, phonetic-languages-simplified-examples-common >=0.1.1 && <1+ build-depends: base >=4.8 && <4.15, ukrainian-phonetics-basic-array >=0.1.2 && <1, phonetic-languages-simplified-base >=0.1 && <1, phonetic-languages-simplified-properties-array >=0.1.2 && <1, phonetic-languages-ukrainian-array >=0.1 && <1, phonetic-languages-filters-array >=0.1 && <1, phonetic-languages-plus >=0.2 && <1, subG >=0.4 && < 1, mmsyn2-array >= 0.1.1 && <1, phonetic-languages-constraints-array >=0.1 && <1, phonetic-languages-permutations-array >= 0.1 && <1, heaps >= 0.3.6.1 && <1, phonetic-languages-simplified-examples-common >=0.1.1 && <1 ghc-options: -threaded -rtsopts hs-source-dirs: ., Simple default-language: Haskell2010 executable rewritePoemG3 main-is: Main.hs- other-modules: Phonetic.Languages.Simplified.Array.Ukrainian.FuncRep2RelatedG2, Phonetic.Languages.Lines+ other-modules: Phonetic.Languages.Simplified.Array.Ukrainian.FuncRep2RelatedG2, Phonetic.Languages.Lines, Phonetic.Languages.Parsing other-extensions: BangPatterns- build-depends: base >=4.8 && <4.15, ukrainian-phonetics-basic-array >=0.1.1 && <1, phonetic-languages-simplified-base >=0.1 && <1, phonetic-languages-simplified-properties-array >=0.1.1 && <1, print-info >=0.1.3 && <1, phonetic-languages-ukrainian-array >=0.1 && <1, phonetic-languages-filters-array >=0.1 && <1, phonetic-languages-plus >=0.2 && <1, subG >= 0.4 && < 1, phonetic-languages-rhythmicity >=0.1.2 && <1, phonetic-languages-constraints-array >=0.1 && <1, phonetic-languages-permutations-array >= 0.1 && <1, heaps >= 0.3.6.1 && <1, phonetic-languages-simplified-examples-common >=0.1.1 && <1, mmsyn2-array >= 0.1.1 && <1+ build-depends: base >=4.8 && <4.15, ukrainian-phonetics-basic-array >=0.1.2 && <1, phonetic-languages-simplified-base >=0.1 && <1, phonetic-languages-simplified-properties-array >=0.1.2 && <1, phonetic-languages-ukrainian-array >=0.1 && <1, phonetic-languages-filters-array >=0.1 && <1, phonetic-languages-plus >=0.2 && <1, subG >= 0.4 && < 1, phonetic-languages-rhythmicity >=0.1.2 && <1, phonetic-languages-constraints-array >=0.1 && <1, phonetic-languages-permutations-array >= 0.1 && <1, heaps >= 0.3.6.1 && <1, phonetic-languages-simplified-examples-common >=0.1.1 && <1, mmsyn2-array >= 0.1.1 && <1 ghc-options: -threaded -rtsopts hs-source-dirs: ., Lines default-language: Haskell2010 executable propertiesTextG3 main-is: Main.hs- other-modules: Phonetic.Languages.Simplified.Array.Ukrainian.FuncRep2RelatedG2, Phonetic.Languages.GetTextualInfo+ other-modules: Phonetic.Languages.Simplified.Array.Ukrainian.FuncRep2RelatedG2, Phonetic.Languages.GetTextualInfo, Phonetic.Languages.Parsing other-extensions: BangPatterns- build-depends: base >=4.8 && <4.15, ukrainian-phonetics-basic-array >=0.1.1 && <1, phonetic-languages-simplified-base >=0.1 && <1, phonetic-languages-simplified-properties-array >=0.1.1 && <1, phonetic-languages-ukrainian-array >=0.1 && <1, phonetic-languages-filters-array >=0.1 && <1, uniqueness-periods-vector-stats >=0.2.1 && <1, parallel >=3.2.0.6 && <4, phonetic-languages-plus >=0.2 && <1, subG >= 0.4 && < 1, phonetic-languages-rhythmicity >=0.1.2 && <1, phonetic-languages-permutations-array >= 0.1 && <1, heaps >= 0.3.6.1 && <1, phonetic-languages-constraints-array >=0.1 && <1, phonetic-languages-simplified-examples-common >=0.1.1 && <1, mmsyn2-array >= 0.1.1 && <1+ build-depends: base >=4.8 && <4.15, ukrainian-phonetics-basic-array >=0.1.2 && <1, phonetic-languages-simplified-base >=0.1 && <1, phonetic-languages-simplified-properties-array >=0.1.2 && <1, phonetic-languages-ukrainian-array >=0.1 && <1, phonetic-languages-filters-array >=0.1 && <1, uniqueness-periods-vector-stats >=0.2.1 && <1, parallel >=3.2.0.6 && <4, phonetic-languages-plus >=0.2 && <1, subG >= 0.4 && < 1, phonetic-languages-rhythmicity >=0.1.2 && <1, phonetic-languages-permutations-array >= 0.1 && <1, heaps >= 0.3.6.1 && <1, phonetic-languages-constraints-array >=0.1 && <1, phonetic-languages-simplified-examples-common >=0.1.1 && <1, mmsyn2-array >= 0.1.1 && <1 ghc-options: -threaded -rtsopts hs-source-dirs: ., GetInfo default-language: Haskell2010