packages feed

phonetic-languages-simplified-examples-array 0.5.0.1 → 0.6.0.0

raw patch · 10 files changed

+232/−91 lines, 10 filesdep ~phonetic-languages-rhythmicitydep ~phonetic-languages-simplified-properties-arraydep ~phonetic-languages-ukrainian-arrayPVP ok

version bump matches the API change (PVP)

Dependency ranges changed: phonetic-languages-rhythmicity, phonetic-languages-simplified-properties-array, phonetic-languages-ukrainian-array

API changes (from Hackage documentation)

- Phonetic.Languages.GetTextualInfo: generalProc :: Bool -> [String] -> [String] -> Coeffs2 -> Coeffs2 -> FilePath -> String -> Int -> Int -> String -> IO ()
+ Phonetic.Languages.GetTextualInfo: generalProc :: (Int, Int) -> Bool -> [String] -> [String] -> Coeffs2 -> Coeffs2 -> FilePath -> String -> Int -> Int -> String -> IO ()
- Phonetic.Languages.Lines: generalProcessment :: Coeffs2 -> [String] -> String -> Int -> FilePath -> IO ()
+ Phonetic.Languages.Lines: generalProcessment :: (Int, Int) -> Coeffs2 -> [String] -> String -> Int -> FilePath -> IO ()

Files

CHANGELOG.md view
@@ -61,3 +61,12 @@  * Fifth version revised A. Changed the README.md file to the just README to fix the display of the command line examples in it.++## 0.6.0.0 -- 2021-07-28++* Sixth version. Changed the command line arguments modifiers notation to the small letters,+removed the double ++ sign (changed to just single +) to simplify the command line arguments usage.+Also changed the way to sign the writing to file for the lineVariantsG3 executable. Added new lines of +properties for the (hypothetic) polyrhythmicity handling. Among them "c", "s", "t", "u", "v" lines are.+Changed the documentation appropriately. Changed the dependencies boundaries. Added the possibility to+'grow lines' for the rewritePoemG3 and propertiesTextG3 executables.
GetInfo/Main.hs view
@@ -8,7 +8,7 @@ -- Analyzes a poetic text in Ukrainian, for every line prints statistic data and -- then for the whole poem prints the hypothesis evaluation information. ----- To enable parallel computations (potentially, they can speed up the work), please, run the @propertiesText@ executable with+-- To enable parallel computations (potentially, they can speed up the work), please, run the @propertiesTextG3@ executable with -- @+RTS -threaded -RTS@ command line options with possibly @-N@ option inside. -- @@ -30,12 +30,20 @@ main :: IO () main = do  args0000 <- getArgs- let !args000 = filter (\ts -> take 2 ts /= "+X") args0000-     !coeffsWX = readCF . drop 2 . concat . take 1 . filter (\xs -> take 2 xs == "+X") $ args0000 -- The command line argument that starts with \"+X\".-     !args00 = filter (/= "++B") args000-     !lstW = any (== "++B") args000-     !args0 = takeWhile (/= "+M") args00 `mappend` drop 1 (dropWhile (/= "-M") args00)-     !multiples = drop 1 . dropWhile (/= "+M") . takeWhile (/= "-M") $ args00 -- Arguments for multiple metrices mode+ let !args000 = filter (\ts -> take 2 ts /= "+x" && take 2 ts /= "+g") args0000+     !growing = filter ((== "+g") . (take 2)) args0000+     (!gr1,!gr2)+            | null growing = (0,0)+            | otherwise = let (nms,mms) = splitAt 1 . drop 2 . take 4 $ growing+                              nm = readMaybe (concat nms)::Maybe Int+                              mm = readMaybe (concat mms)::Maybe Int in case (nm,mm) of+                                  (Just n4,Just m4) -> if (m4 `rem` 7) < (n4 `rem` 7) then (n4 `rem` 7 + 1, m4 `rem` 7 + 1) else (0,0)+                                  _ -> (0,0)+     !coeffsWX = readCF . drop 2 . concat . take 1 . filter (\xs -> take 2 xs == "+x") $ args0000 -- The command line argument that starts with \"+x\".+     !args00 = filter (/= "+b") args000+     !lstW = any (== "+b") args000+     !args0 = takeWhile (/= "+m") args00 `mappend` drop 1 (dropWhile (/= "-m") args00)+     !multiples = drop 1 . dropWhile (/= "+m") . takeWhile (/= "-m") $ args00 -- Arguments for multiple metrices mode      !args = filter (\xs -> all (/= ':') xs && all (/= '@') xs) args0      !coeffs = readCF . concat . take 1 $ args -- The first command line argument. If not sure, just enter \"1_\".      !lInes = filter (any (== ':')) args0@@ -47,7 +55,7 @@        !printLine = fromMaybe 0 (readMaybe (concat . take 1 . drop 3 $ args)::(Maybe Int)) -- The fourth command line argument except those ones that are  RTS arguments. Set to 1 if you would like to print the current line within the information        !toOneLine = fromMaybe 0 (readMaybe (concat . take 1 . drop 4 $ args)::(Maybe Int)) -- The fifth command line argument except those ones that are RTS arguments. Set to 1 if you would like to convert the text into one single line before applying to it the processment (it can be more conceptually consistent in such a case)        !choice = concat . drop 5 . take 6 $ args -- The sixth command line argument that controls what properties are used.-   generalProc lstW multiples lInes coeffs coeffsWX file gzS printLine toOneLine choice+   generalProc (gr1,gr2) lstW multiples lInes coeffs coeffsWX file gzS printLine toOneLine choice   else do    contents <- readFile file    fLinesIO contents@@ -58,7 +66,7 @@        !printLine = fromMaybe 0 (readMaybe (concat . take 1 . drop 2 $ args)::(Maybe Int))        !toOneLine = fromMaybe 0 (readMaybe (concat . take 1 . drop 3 $ args)::(Maybe Int))        !choice = concat . drop 4 . take 5 $ args-   generalProc lstW multiples lInes coeffs coeffsWX file gzS printLine toOneLine choice+   generalProc (gr1,gr2) lstW multiples lInes coeffs coeffsWX file gzS printLine toOneLine choice   else do    contents <- readFile file    fLinesIO contents
Lines/Main.hs view
@@ -32,17 +32,22 @@ -- 'https://hackage.haskell.org/package/uniqueness-periods-vector-filters' -- -- @since 0.2.0.0--- You can also run program in a \'comparative\' mode by specifying \"+C\" as one of the command line arguments and then+-- You can also run program in a \'comparative\' mode by specifying \"+c\" as one of the command line arguments and then -- three files -- the first two -- the existing ones with probably rewritten text by the program for different arguments -- and the third one is the resulting file. While running in such a mode the program outputs line-by-line the contents of -- the two first files and writes one of them (or an empty line if neither one) to the third file.+--+-- @ since 0.6.0.0+-- There is also the possibility to use \'line growing\' that is to use the 'prepereGrowTextMN' function+-- with the 'Int' arguments from the first argument tuple. This allows to rearrange the given text and then+-- to rewrite it. For this you need to specify somewhere (withot \"+c\" modifier) \"+g73\" or something similar. main :: IO () main = do  args0 <- getArgs  let coeffs = readCF . concat . take 1 $ args0 -- The first command line argument. If not sure, pass just \"1_\".-     compare2 = (\xs -> if null xs then False else True) . filter (== "+C") $ args0+     compare2 = (\xs -> if null xs then False else True) . filter (== "+c") $ args0  if compare2 then do-   let args1 = filter (/= "+C") args0+   let args1 = filter (/= "+c") args0        file1 = concat . take 1 $ args1        file2 = concat . drop 1 . take 2 $ args1        file3 = concat . drop 2 . take 3 $ args1@@ -51,15 +56,23 @@     putStrLn "You specified some files twice being in the comparative mode, the program has no well-defined behaviour in such a mode. "     putStrLn "Please, run it again and specify the three different arguments with the first two being the existing files. "  else do+  let growing = filter ((== "+g") . (take 2)) args0+      (gr1,gr2)+            | null growing = (0,0)+            | otherwise = let (nms,mms) = splitAt 1 . drop 2 . take 4 $ growing+                              nm = readMaybe (concat nms)::Maybe Int+                              mm = readMaybe (concat mms)::Maybe Int in case (nm,mm) of+                                  (Just n4,Just m4) -> if (m4 `rem` 7) < (n4 `rem` 7) then (n4 `rem` 7 + 1, m4 `rem` 7 + 1) else (0,0)+                                  _ -> (0,0)   if isPair coeffs then do    let !numericArgs = filter (all isDigit) . drop 3 $ args0        !choice = concat . drop 2 . take 3 $ args0        !numberI = fromMaybe 1 (readMaybe (concat . take 1 $ numericArgs)::Maybe Int)        !file = concat . drop 1 . take 2 $ args0-   generalProcessment coeffs numericArgs choice numberI file+   generalProcessment (gr1,gr2) coeffs numericArgs choice numberI file   else do    let !numericArgs = filter (all isDigit) . drop 2 $ args0        !choice = concat . drop 1 . take 2 $ args0        !numberI = fromMaybe 1 (readMaybe (concat . take 1 $ numericArgs)::Maybe Int)        !file = concat . take 1 $ args0-   generalProcessment coeffs numericArgs choice numberI file+   generalProcessment (gr1,gr2) coeffs numericArgs choice numberI file
Phonetic/Languages/GetTextualInfo.hs view
@@ -50,16 +50,23 @@ the k1 and k2 coefficients (default ones equal to 2.0 and 0.125) for the functions from the Rhythmicity.TwoFourth module. Otherwise, it is used for the functions to specify the level of emphasizing the two-based and three-based periods (the default values here are 1.0 both).+@ since 0.6.0.0 -- There is also the possibility to use \'line growing\' that is to use the 'prepereGrowTextMN' function+with the 'Int' arguments from the first argument tuple. This allows to rearrange the given text and then+to rewrite it.+Besides there are new lines of the arguments for the 'String' argument that can begin with \"c\", \"s\", \"t\",+\"u\", \"v\" letters. For more information, please, refer to the 'Phonetic.Languages.Array.Ukrainian.PropertiesSyllablesG2.rhythmicity'. -}-generalProc :: Bool -> [String] -> [String] -> Coeffs2 -> Coeffs2 -> FilePath -> String -> Int -> Int -> String -> IO ()-generalProc lstW multiples2 lInes coeffs coeffsWX file gzS printLine toOneLine choice+generalProc :: (Int,Int) -> Bool -> [String] -> [String] -> Coeffs2 -> Coeffs2 -> FilePath -> String -> Int -> Int -> String -> IO ()+generalProc (gr1,gr2) lstW multiples2 lInes coeffs coeffsWX file gzS printLine toOneLine choice  | null lInes = do     contents <- readFile file-    let !flines = fLines toOneLine contents+    let !flines+          | gr1 == 0 = fLines toOneLine contents+          | otherwise = prepareGrowTextMN gr1 gr2 . unlines . fLines toOneLine $ contents     getData3 lstW coeffs coeffsWX (getIntervalsNS lstW gzS flines) printLine choice multiples2 flines  | otherwise = do     contents <- readFile file-    let !flines = fLines toOneLine . unlines . linesFromArgsG lInes . fLines 0 $ contents+    let !flines = (if gr1 == 0 then id else prepareGrowTextMN gr1 gr2 . unlines) . fLines toOneLine . unlines . linesFromArgsG lInes . fLines 0 $ contents     getData3 lstW coeffs coeffsWX (getIntervalsNS lstW gzS flines) printLine choice multiples2 flines  linesFromArgs1 :: Int -> String -> [String] -> [String]
Phonetic/Languages/Lines.hs view
@@ -39,12 +39,19 @@ the k1 and k2 coefficients (default ones equal to 2.0 and 0.125) for the functions from the Rhythmicity.TwoFourth module. Otherwise, it is used for the functions to specify the level of emphasizing the two-based and three-based periods (the default values here are 1.0 both).+@ since 0.6.0.0 -- There is also the possibility to use \'line growing\' that is to use the 'prepereGrowTextMN' function+with the 'Int' arguments from the first argument tuple. This allows to rearrange the given text and then+to rewrite it.+Besides there are new lines of the arguments for the 'String' argument that can begin with \"c\", \"s\", \"t\",+\"u\", \"v\" letters. For more information, please, refer to the 'Phonetic.Languages.Array.Ukrainian.PropertiesSyllablesG2.rhythmicity'. -}-generalProcessment :: Coeffs2 -> [String] -> String -> Int -> FilePath -> IO ()-generalProcessment coeffs numericArgs choice numberI file = do+generalProcessment :: (Int,Int) -> Coeffs2 -> [String] -> String -> Int -> FilePath -> IO ()+generalProcessment (gr1,gr2) coeffs numericArgs choice numberI file = do   contents <- readFile file   let !permsV = genPermutationsArrL-      !flines = fLines 0 contents+      !flines+        | gr1 == 0 = fLines 0 contents+        | otherwise = prepareGrowTextMN gr1 gr2 . unlines . fLines 0 $ contents       !lasts = map (\ts -> if null . words $ ts then [] else last . words $ ts) flines   if compare numberI 2 == LT then toFileStr (file ++ ".new.txt") (circle2 coeffs permsV choice [] $ flines)   else do
Phonetic/Languages/Simple.hs view
@@ -51,6 +51,9 @@ the k1 and k2 coefficients (default ones equal to 2.0 and 0.125) for the functions from the Rhythmicity.TwoFourth module. Otherwise, it is used for the functions to specify the level of emphasizing the two-based and three-based periods (the default values here are 1.0 both).+@ since 0.6.0.0+Changed the arguments signing so that capital letters changed to the small ones, double ++ changed to just singular +.+ -} generalProc2G :: Bool -> FilePath -> Bool -> Bool -> [String] -> Coeffs2 -> Coeffs2 -> [String] -> Bool -> IO () generalProc2G nativeUkrainian toFile1 interactive jstL0 args0 coeffs coeffsWX args lstW2@@ -71,12 +74,12 @@ -- @ since 0.3.0.0 The result is not 'IO' (), but 'IO' 'String'. The type also changed generally. generalProc2 :: Bool -> Bool -> Bool -> [String] -> Coeffs2 -> Coeffs2 -> [String] -> Bool -> IO String generalProc2 nativeUkrainian interactive jstL0 args0 coeffs coeffsWX args lstW2 = do-  let !argMss = take 5 . filter (not . null) . forMultiplePropertiesF . drop 1 . dropWhile (/= "+M") . takeWhile (/= "-M") $ args0+  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        !xs = concat . take 1 . fLines 0 . unwords . drop 1 $ textualArgs        !l = length . words $ xs-       !argCs = catMaybes (fmap (readMaybeECG (l - 1)) . (showB l lstW2:) . drop 1 . dropWhile (/= "+A") . takeWhile (/= "-A") $ args0)+       !argCs = catMaybes (fmap (readMaybeECG (l - 1)) . (showB l lstW2:) . drop 1 . dropWhile (/= "+a") . takeWhile (/= "-a") $ args0)        !arg0 = fromMaybe 1 $ (readMaybe (concat . take 1 $ numericArgs)::Maybe Int)        !numberI = fromMaybe 1 $ (readMaybe (concat . drop 1 . take 2 $ numericArgs)::Maybe Int)        !choice = concat . take 1 $ textualArgs@@ -106,7 +109,7 @@        !argsZipped = L.zip4 intervalNmbrss arg0s numberIs choices        !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)+       !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 nativeUkrainian line wwss else print1el jstL0 (concat . take 1 $ choices) wwss    else do@@ -125,13 +128,13 @@ messageInfo n True  | n == 1 = "Ви зупинили програму, будь ласка, якщо потрібно, виконайте її знову з кращими аргументами. "  | n == 2 = "Будь ласка, вкажіть варіант (який Ви бажаєте, щоб він став результуючим рядком) за його номером. "- | n == 3 = "Будь ласка, перевірте, чи рядок нижче відповідає і узгоджується з обмеженнями, які Ви вказали між +A та -A опціями. Перевірте також, чи Ви вказали \"++B\" чи \"++BL\" опцію(ї). Якщо введені опції та аргументи не узгоджені з виведеним далі рядком, тоді введіть далі \"n\", натисніть Enter і опісля запустіть програму на виконання знову з кращими аргументами. " `mappend` newLineEnding `mappend` "Якщо рядок узгоджується з Вашим вводом між +A та -A, тоді просто натисніть Enter, щоб продовжити далі. " `mappend` newLineEnding+ | n == 3 = "Будь ласка, перевірте, чи рядок нижче відповідає і узгоджується з обмеженнями, які Ви вказали між +a та -a опціями. Перевірте також, чи Ви вказали \"+b\" чи \"+bl\" опцію(ї). Якщо введені опції та аргументи не узгоджені з виведеним далі рядком, тоді введіть далі \"n\", натисніть Enter і опісля запустіть програму на виконання знову з кращими аргументами. " `mappend` newLineEnding `mappend` "Якщо рядок узгоджується з Вашим вводом між +a та -a, тоді просто натисніть Enter, щоб продовжити далі. " `mappend` newLineEnding  | n == 4 = "Було задано недостатньо інформації для продовження обчислювального процесу "  | otherwise = "Ви вказали лише один варіант властивостей. " messageInfo n False  | n == 1 = "You stopped the program, please, if needed, run it again with better arguments. "  | n == 2 = "Please, specify the variant which you would like to become the resulting string by its number. "- | n == 3 = "Please, check whether the line below corresponds and is consistent with the constraints you have specified between the +A and -A options. Check also whether you have specified the \"++B\" or \"++BL\" option(s). If it is inconsistent then enter further \"n\", press Enter and then run the program again with better arguments. " `mappend` newLineEnding `mappend` "If the line is consistent with your input between +A and -A then just press Enter to proceed further. " `mappend` newLineEnding+ | n == 3 = "Please, check whether the line below corresponds and is consistent with the constraints you have specified between the +a and -a options. Check also whether you have specified the \"+b\" or \"+bl\" option(s). If it is inconsistent then enter further \"n\", press Enter and then run the program again with better arguments. " `mappend` newLineEnding `mappend` "If the line is consistent with your input between +a and -a then just press Enter to proceed further. " `mappend` newLineEnding  | n == 4 = "No data has been specified to control the computation process. "  | otherwise = "You have specified just one variant of the properties. " 
Phonetic/Languages/Simplified/Array/Ukrainian/FuncRep2RelatedG2.hs view
@@ -18,11 +18,77 @@  -- | 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 = getBFstL' (procBoth4InvF g coeffs) [("02y",procRhythmicity23F 1.3 g "02y" coeffs),+chooseMax g coeffs choice+ | take 1 choice == "c" = procRhythmicity23F 1.3 g choice coeffs+ | otherwise = getBFstL' (procBoth4InvF g coeffs) [("02y",procRhythmicity23F 1.3 g "02y" coeffs),    ("02z",procRhythmicity23F 1.3 g "02z" coeffs), ("03y",procRhythmicity23F 1.3 g "03y" coeffs),     ("03z",procRhythmicity23F 1.3 g "03z" coeffs), ("04y",procRhythmicity23F 1.3 g "04y" coeffs),      ("04z",procRhythmicity23F 1.3 g "04z" coeffs), ("0y",procRhythmicity23F 1.3 g "0y" coeffs),-      ("0z",procRhythmicity23F 1.3 g "0z" coeffs), ("w01",procRhythmicity23F 1.3 g "w01" coeffs),+      ("0z",procRhythmicity23F 1.3 g "0z" coeffs), ("s01",procRhythmicity23F 1.3 g "s01" coeffs),+      ("s02",procRhythmicity23F 1.3 g "s02" coeffs),("s03",procRhythmicity23F 1.3 g "s03" coeffs),+      ("s04",procRhythmicity23F 1.3 g "s04" coeffs),("s11",procRhythmicity23F 1.3 g "s11" coeffs),+      ("s12",procRhythmicity23F 1.3 g "s12" coeffs),("s13",procRhythmicity23F 1.3 g "s13" coeffs),+      ("s14",procRhythmicity23F 1.3 g "s14" coeffs),("s21",procRhythmicity23F 1.3 g "s21" coeffs),+      ("s22",procRhythmicity23F 1.3 g "s22" coeffs),("s23",procRhythmicity23F 1.3 g "s23" coeffs),+      ("s24",procRhythmicity23F 1.3 g "s24" coeffs),("s31",procRhythmicity23F 1.3 g "s31" coeffs),+      ("s32",procRhythmicity23F 1.3 g "s32" coeffs),("s33",procRhythmicity23F 1.3 g "s33" coeffs),+      ("s34",procRhythmicity23F 1.3 g "s34" coeffs),("s41",procRhythmicity23F 1.3 g "s41" coeffs),+      ("s42",procRhythmicity23F 1.3 g "s42" coeffs),("s43",procRhythmicity23F 1.3 g "s43" coeffs),+      ("s44",procRhythmicity23F 1.3 g "s44" coeffs),("s51",procRhythmicity23F 1.3 g "s51" coeffs),+      ("s52",procRhythmicity23F 1.3 g "s52" coeffs),("s53",procRhythmicity23F 1.3 g "s53" coeffs),+      ("s54",procRhythmicity23F 1.3 g "s54" coeffs),("s61",procRhythmicity23F 1.3 g "s61" coeffs),+      ("s62",procRhythmicity23F 1.3 g "s62" coeffs),("s63",procRhythmicity23F 1.3 g "s63" coeffs),+      ("s64",procRhythmicity23F 1.3 g "s64" coeffs),("s71",procRhythmicity23F 1.3 g "s71" coeffs),+      ("s72",procRhythmicity23F 1.3 g "s73" coeffs),("s74",procRhythmicity23F 1.3 g "s74" coeffs),+      ("t01",procRhythmicity23F 1.3 g "t01" coeffs),+      ("t02",procRhythmicity23F 1.3 g "t02" coeffs),("t03",procRhythmicity23F 1.3 g "t03" coeffs),+      ("t04",procRhythmicity23F 1.3 g "t04" coeffs),("t11",procRhythmicity23F 1.3 g "t11" coeffs),+      ("t12",procRhythmicity23F 1.3 g "t12" coeffs),("t13",procRhythmicity23F 1.3 g "t13" coeffs),+      ("t14",procRhythmicity23F 1.3 g "t14" coeffs),("t21",procRhythmicity23F 1.3 g "t21" coeffs),+      ("t22",procRhythmicity23F 1.3 g "t22" coeffs),("t23",procRhythmicity23F 1.3 g "t23" coeffs),+      ("t24",procRhythmicity23F 1.3 g "t24" coeffs),("t31",procRhythmicity23F 1.3 g "t31" coeffs),+      ("t32",procRhythmicity23F 1.3 g "t32" coeffs),("t33",procRhythmicity23F 1.3 g "t33" coeffs),+      ("t34",procRhythmicity23F 1.3 g "t34" coeffs),("t41",procRhythmicity23F 1.3 g "t41" coeffs),+      ("t42",procRhythmicity23F 1.3 g "t42" coeffs),("t43",procRhythmicity23F 1.3 g "t43" coeffs),+      ("t44",procRhythmicity23F 1.3 g "t44" coeffs),("t51",procRhythmicity23F 1.3 g "t51" coeffs),+      ("t52",procRhythmicity23F 1.3 g "t52" coeffs),("t53",procRhythmicity23F 1.3 g "t53" coeffs),+      ("t54",procRhythmicity23F 1.3 g "t54" coeffs),("t61",procRhythmicity23F 1.3 g "t61" coeffs),+      ("t62",procRhythmicity23F 1.3 g "t62" coeffs),("t63",procRhythmicity23F 1.3 g "t63" coeffs),+      ("t64",procRhythmicity23F 1.3 g "t64" coeffs),("t71",procRhythmicity23F 1.3 g "t71" coeffs),+      ("t72",procRhythmicity23F 1.3 g "t73" coeffs),("t74",procRhythmicity23F 1.3 g "t74" coeffs),+      ("u01",procRhythmicity23F 1.3 g "u01" coeffs),+      ("u02",procRhythmicity23F 1.3 g "u02" coeffs),("u03",procRhythmicity23F 1.3 g "u03" coeffs),+      ("u04",procRhythmicity23F 1.3 g "u04" coeffs),("u11",procRhythmicity23F 1.3 g "u11" coeffs),+      ("u12",procRhythmicity23F 1.3 g "u12" coeffs),("u13",procRhythmicity23F 1.3 g "u13" coeffs),+      ("u14",procRhythmicity23F 1.3 g "u14" coeffs),("u21",procRhythmicity23F 1.3 g "u21" coeffs),+      ("u22",procRhythmicity23F 1.3 g "u22" coeffs),("u23",procRhythmicity23F 1.3 g "u23" coeffs),+      ("u24",procRhythmicity23F 1.3 g "u24" coeffs),("u31",procRhythmicity23F 1.3 g "u31" coeffs),+      ("u32",procRhythmicity23F 1.3 g "u32" coeffs),("u33",procRhythmicity23F 1.3 g "u33" coeffs),+      ("u34",procRhythmicity23F 1.3 g "u34" coeffs),("u41",procRhythmicity23F 1.3 g "u41" coeffs),+      ("u42",procRhythmicity23F 1.3 g "u42" coeffs),("u43",procRhythmicity23F 1.3 g "u43" coeffs),+      ("u44",procRhythmicity23F 1.3 g "u44" coeffs),("u51",procRhythmicity23F 1.3 g "u51" coeffs),+      ("u52",procRhythmicity23F 1.3 g "u52" coeffs),("u53",procRhythmicity23F 1.3 g "u53" coeffs),+      ("u54",procRhythmicity23F 1.3 g "u54" coeffs),("u61",procRhythmicity23F 1.3 g "u61" coeffs),+      ("u62",procRhythmicity23F 1.3 g "u62" coeffs),("u63",procRhythmicity23F 1.3 g "u63" coeffs),+      ("u64",procRhythmicity23F 1.3 g "u64" coeffs),("u71",procRhythmicity23F 1.3 g "u71" coeffs),+      ("u72",procRhythmicity23F 1.3 g "u73" coeffs),("u74",procRhythmicity23F 1.3 g "u74" coeffs),+      ("v01",procRhythmicity23F 1.3 g "v01" coeffs),+      ("v02",procRhythmicity23F 1.3 g "v02" coeffs),("v03",procRhythmicity23F 1.3 g "v03" coeffs),+      ("v04",procRhythmicity23F 1.3 g "v04" coeffs),("v11",procRhythmicity23F 1.3 g "v11" coeffs),+      ("v12",procRhythmicity23F 1.3 g "v12" coeffs),("v13",procRhythmicity23F 1.3 g "v13" coeffs),+      ("v14",procRhythmicity23F 1.3 g "v14" coeffs),("v21",procRhythmicity23F 1.3 g "v21" coeffs),+      ("v22",procRhythmicity23F 1.3 g "v22" coeffs),("v23",procRhythmicity23F 1.3 g "v23" coeffs),+      ("v24",procRhythmicity23F 1.3 g "v24" coeffs),("v31",procRhythmicity23F 1.3 g "v31" coeffs),+      ("v32",procRhythmicity23F 1.3 g "v32" coeffs),("v33",procRhythmicity23F 1.3 g "v33" coeffs),+      ("v34",procRhythmicity23F 1.3 g "v34" coeffs),("v41",procRhythmicity23F 1.3 g "v41" coeffs),+      ("v42",procRhythmicity23F 1.3 g "v42" coeffs),("v43",procRhythmicity23F 1.3 g "v43" coeffs),+      ("v44",procRhythmicity23F 1.3 g "v44" coeffs),("v51",procRhythmicity23F 1.3 g "v51" coeffs),+      ("v52",procRhythmicity23F 1.3 g "v52" coeffs),("v53",procRhythmicity23F 1.3 g "v53" coeffs),+      ("v54",procRhythmicity23F 1.3 g "v54" coeffs),("v61",procRhythmicity23F 1.3 g "v61" coeffs),+      ("v62",procRhythmicity23F 1.3 g "v62" coeffs),("v63",procRhythmicity23F 1.3 g "v63" coeffs),+      ("v64",procRhythmicity23F 1.3 g "v64" coeffs),("v71",procRhythmicity23F 1.3 g "v71" coeffs),+      ("v72",procRhythmicity23F 1.3 g "v73" coeffs),("v74",procRhythmicity23F 1.3 g "v74" coeffs),+       ("w01",procRhythmicity23F 1.3 g "w01" coeffs),        ("w02",procRhythmicity23F 1.3 g "w02" coeffs), ("w03",procRhythmicity23F 1.3 g "w03" coeffs),         ("w04",procRhythmicity23F 1.3 g "w04" coeffs), ("w11",procRhythmicity23F 1.3 g "w11" coeffs),          ("w12",procRhythmicity23F 1.3 g "w12" coeffs), ("w13",procRhythmicity23F 1.3 g "w13" coeffs),
README view
@@ -1,37 +1,56 @@-The short (possibly) instruction how to use the programs of the package phonetic-languages-simplified-examples-array+The short (possibly) instruction how to use the programs+of the package phonetic-languages-simplified-examples-array in Ukrainian is here: -https://oleksandrzhabenko.github.io/uk/Instruction_phonetic-languages-simplified-examples-array-0.5.0.0.pdf+https://web.archive.org/web/20210728223122/https://oleksandrzhabenko.github.io/uk/Instruction_phonetic-languages-simplified-examples-array-0.6.0.0.pdf  The instruction in English is here: -https://web.archive.org/web/20210720181838/https://oleksandrzhabenko.github.io/uk/Eng-Ukrainian_as_a_Phonetic_Language_Instructions-0.5.0.0.pdf+https://web.archive.org/web/20210728223308/https://oleksandrzhabenko.github.io/uk/Eng-Ukrainian_as_a_Phonetic_Language_Instructions-0.6.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-part of the rewritePoemG3 executable.+Since the version 0.2.0.0 there exists 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 part of the rewritePoemG3+executable. -Since the version 0.4.0.0 added new line of rhythmicity evaluation functions ("z"-line).-The behaviour of the previous functions also -changed, so it may be needed (in case where the results have some principal meaning, e. g. in scientific research,-not the text itself) to recalculate the results using these functions. Added the possibility to get the Ukrainian-informational messages during the work of the lineVariantsG3 executable (using the "+U" command line option not inside+Since the version 0.4.0.0 added new line of rhythmicity+evaluation functions ("z"-line). The behaviour of the+previous functions also changed, so it may be needed+(in case where the results have some principal meaning,+e. g. in scientific research, not the text itself)+to recalculate the results using these functions.+Added the possibility to get the Ukrainian informational+messages during the work of the lineVariantsG3+executable (using the "+u" command line option not inside the groups of options). -Since the version 0.5.0.0 added two new lines with more complex behaviours ("w" and "x" lines). For more information,-please, refer to the section 'WX argument' in the instructions above.+Since the version 0.5.0.0 added two new lines with more+complex behaviours ("w" and "x" lines). For more+information, please, refer to the section 'WX argument'+in the instructions above. +Since the version 0.6.0.0 changed the command line+arguments modifiers notation to the small letters,+removed the double ++ sign (changed to just single++) to simplify the command line arguments usage.+Also changed the way to sign the writing to file for+the lineVariantsG3 executable. Added new lines of+properties for the (hypothetic) polyrhythmicity+handling. Among them "c", "s", "t", "u", "v" lines+are. Added the possibility to 'grow lines' for the+rewritePoemG3 and propertiesTextG3 executables.+ * Examples of usage  1) lineVariantsG3: -lineVariantsG3 <first argument> [<WX argument> <whether print the values of the property(ies)> <whether the last word must remain-on its place>] <numeric arguments> <property type> <Ukrainian text>+lineVariantsG3 <first argument> [<WX argument> <whether to print the values of the property(ies)> <whether the last word must remain on its place>] <numeric arguments> <property type> <Ukrainian text>  or: -lineVariantsG3 <first argument> [<WX argument> <whether print the values of the property(ies)> <whether the last word must remain-on its place>] <numeric arguments> <property type> <Ukrainian text> <somewhere among the arguments as a single group: constraints>+lineVariantsG3 <first argument> [<WX argument> <whether print the values of the property(ies)> <whether the last word must remain on its place>] <numeric arguments> <property type> <Ukrainian text> <somewhere among the arguments as a single group: constraints>  More partucular example of the abovementioned one: @@ -40,58 +59,66 @@  lineVariantsG3 10.0_1.2 5 5 1 2 04z садок вишневий коло хати хрущі над вишнями гудуть  -lineVariantsG3 +M 02y 3 03z 3 y0 10 -M ++BL <Ukrainian text>+lineVariantsG3 +m 02y 3 03z 3 y0 10 -m +bl <Ukrainian text> -lineVariantsG3 ++I ++BL 4.3_ +M 02y 3 0y 3 y0 20 y2 40 04z 3 -M садок вишневий коло хати хрущі над вишнями гудуть+lineVariantsG3 +i +bl 4.3_ +m 02y 3 0y 3 y0 20 y2 40 04z 3 -m садок вишневий коло хати хрущі над вишнями гудуть -lineVariantsG3 +IF hello.txt -IF ++BL +M 02y 3 0y 3 04y 5 y0 40 z4 50 -M садок вишневий коло хати хрущі над вишнями гудуть+lineVariantsG3 +f hello.txt +bl +m 02y 3 0y 3 04y 5 y0 40 z4 50 -m садок вишневий коло хати хрущі над вишнями гудуть -To get the Ukrainian informational messages during the work of the executable (instead of the default English ones), please,-use the "+U" command line option anywhere not inside the groups of the options.+To get the Ukrainian informational messages during the+work of the executable (instead of the default English+ones), please, use the "+U" command line option anywhere+not inside the groups of the options. -You can also use multiple variations mode to look at the synonyms, paraphrases etc.+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:+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.+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+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: -propertiesTextG3 <first argument> [<WX argument>] <file with Ukrainian text> <control of the quantity of the intervals>-<control of printing the line of the text, too> <control of the sectioning into the lines> <property type>+propertiesTextG3 <first argument> [<WX argument> <whether to grow lines>] <file with Ukrainian text> <control of the quantity of the intervals> <control of printing the line of the text, too> <control of the sectioning into the lines> <property type> -propertiesTextG3 <first argument> [<WX argument>] <file with Ukrainian text> <control of the quantity of the intervals>-<control of printing the line of the text, too> <control of the sectioning into the lines> <property type> | distributionTextG <the same argument of the quantity of the lines> <whether to output also by-line statistics>+propertiesTextG3 <first argument> [<WX argument> <whether to grow lines>] <file with Ukrainian text> <control of the quantity of the intervals> <control of printing the line of the text, too> <control of the sectioning into the lines> <property type> | distributionTextG <the same argument of the quantity of the lines> <whether to output also by-line statistics> -PowerShell -Command "propertiesTextG3 <first argument> [<WX argument>] <file with Ukrainian text> <control of the quantity-of the intervals> <control of printing the line of the text, too> <control of the sectioning into the lines>-<property type> | distributionTextG  <the same argument of the quantity of the lines>-<whether to output also by-line statistics>”+PowerShell -Command "propertiesTextG3 <first argument> [<WX argument> <whether to grow lines>] <file with Ukrainian text> <control of the quantity of the intervals> <control of printing the line of the text, too> <control of the sectioning into the lines> <property type> | distributionTextG  <the same argument of the quantity of the lines> <whether to output also by-line statistics>” -Note: Below the +RTS -N --RTS corresponds to the architectures where the parallelism is possible so that -N is-one of the possible options for RTS. If the following with RTS arguments does not work, then remove the-+RTS -N --RTS block from the command line. One of the examples where RTS does not support parallelism of this kind is-armhf (e. g. Linux on Raspberry PI in 32-bit mode).+Note: Below the +RTS -N --RTS corresponds to the+architectures where the parallelism is possible so that+-N is one of the possible options for RTS. If the+following with RTS arguments does not work, then remove+the +RTS -N --RTS block from the command line. One of the+examples where RTS does not support parallelism of this+kind is armhf (e. g. Linux on Raspberry PI in 32-bit mode). -propertiesTextG3 sadok0.txt +RTS -N --RTS s 1 0 +M y0 0y 02z 03y z2 y3 yyy -M+propertiesTextG3 sadok0.txt +RTS -N --RTS s 1 0 +m y0 0y 02z 03y z2 y3 yyy -m -propertiesTextG3 sadok0.txt +RTS -N --RTS s 1 0 03z ++B | distributionTextG s 1 +W+propertiesTextG3 sadok0.txt +RTS -N --RTS s 1 0 03z +b | distributionTextG s 1 +W +propertiesTextG3 sadok0.txt +RTS -N --RTS s 1 0 03z +g73 +b | distributionTextG s 1 +W+ propertiesTextG3 <filepath to the file with the Ukrainian text for analysis> @n  3) rewritePoemG3: -rewritePoemG3 <first argument> <file with the Ukrainian text> <property type> <numeric arguments>+rewritePoemG3 <first argument> [<whether to grow lines>] <file with the Ukrainian text> <property type> <numeric arguments> -rewritePoemG3 +C <file1> <file2> <file3> (all the files must be different and simultaneously the first two ones must+rewritePoemG3 +c <file1> <file2> <file3> (all the files must be different and simultaneously the first two ones must exist already with some text, otherwise, the program gives no meaningful result). 
Simple/Main.hs view
@@ -31,18 +31,19 @@ main :: IO () main = do  args00 <- getArgs- let args0 = filter (\xs -> take 2 xs /= "+X" && xs /= "++B" && xs /= "++L" && xs /= "++BL" && xs /= "++I" && xs /= "+U") args00-     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.-     nativeUkrainian = if any (== "+U") args00 then True else False -- If one of the command line options is \"+U\" then the informational messages are printed in Ukrainian, otherwise (the default behaviour) they are in English.-     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 \"+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)+ let args0 = filter (\xs -> take 2 xs /= "+x" && xs /= "+b" && xs /= "+l" && xs /= "+bl" && xs /= "+i" && xs /= "+u") args00+     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.+     nativeUkrainian = if any (== "+u") args00 then True else False -- If one of the command line options is \"+u\" then the informational messages are printed in Ukrainian, otherwise (the default behaviour) they are in English.+     toFileMode1 = concat . take 1 . drop 1 . dropWhile (/= "+f") $ 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 == "+f") args00 then True else False -- If one of the command line options is \"+i\", or \"+f\" 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)+      | null toFileMode1 = filter (/= "+f") args01+      | otherwise = let (krs,lrs) = break (== "+f") args01+                        mrs = drop 2 lrs in krs `mappend` mrs+     args = takeWhile (/= "+m") args02 `mappend` (drop 1 . dropWhile (/= "-m") $ args02)      coeffs = readCF . concat . take 1 $ args -- The first command line argument.-     coeffsWX = readCF . drop 2 . concat . take 1 . filter (\xs -> take 2 xs == "+X") $ args00 -- The command line argument that starts with \"+X\".+     coeffsWX = readCF . drop 2 . concat . take 1 . filter (\xs -> take 2 xs == "+x") $ args00 -- The command line argument that starts with \"+x\".  if isPair coeffs then generalProc2G nativeUkrainian toFileMode1 interactiveP jstL0 args0 coeffs coeffsWX (drop 1 args) lstW  else generalProc2G nativeUkrainian toFileMode1 interactiveP jstL0 args0 coeffs coeffsWX 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.5.0.1+version:             0.6.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. 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.+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 brief 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@@ -20,7 +20,7 @@   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.2 && <1, phonetic-languages-simplified-base >=0.1 && <1, phonetic-languages-simplified-properties-array >=0.3 && <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.3.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.3 && <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.4 && <1, phonetic-languages-ukrainian-array >=0.2.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.5 && <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.3 && <1   -- hs-source-dirs:   default-language:    Haskell2010 @@ -28,7 +28,7 @@   main-is:             Main.hs   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.2 && <1, phonetic-languages-simplified-base >=0.1 && <1, phonetic-languages-simplified-properties-array >=0.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.3 && <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.4 && <1, phonetic-languages-ukrainian-array >=0.2.1 && <1, phonetic-languages-filters-array >=0.1 && <1, phonetic-languages-plus >=0.2 && <1, subG >=0.4 && < 1, mmsyn2-array >= 0.1.3 && <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@@ -37,7 +37,7 @@   main-is:             Main.hs   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.2 && <1, phonetic-languages-simplified-base >=0.1 && <1, phonetic-languages-simplified-properties-array >=0.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.3.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.3 && <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.4 && <1, phonetic-languages-ukrainian-array >=0.2.1 && <1, phonetic-languages-filters-array >=0.1 && <1, phonetic-languages-plus >=0.2 && <1, subG >= 0.4 && < 1, phonetic-languages-rhythmicity >=0.5 && <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.3 && <1   ghc-options:         -threaded -rtsopts   hs-source-dirs:      ., Lines   default-language:    Haskell2010@@ -46,7 +46,7 @@   main-is:             Main.hs   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.2 && <1, phonetic-languages-simplified-base >=0.1 && <1, phonetic-languages-simplified-properties-array >=0.3 && <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.3.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.3 && <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.4 && <1, phonetic-languages-ukrainian-array >=0.2.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.5 && <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.3 && <1   ghc-options:         -threaded -rtsopts   hs-source-dirs:      ., GetInfo   default-language:    Haskell2010