packages feed

phonetic-languages-simplified-lists-examples 0.5.0.0 → 0.6.0.0

raw patch · 6 files changed

+118/−94 lines, 6 filesdep ~phonetic-languages-plusPVP ok

version bump matches the API change (PVP)

Dependency ranges changed: phonetic-languages-plus

API changes (from Hackage documentation)

+ Phonetic.Languages.Simplified.Lists.SimpleConstraints: showB :: Int -> Bool -> String

Files

CHANGELOG.md view
@@ -32,3 +32,9 @@  * Fifth version. Switched to the Double instead of Float whenever possible. Some dependencies changes for this. +## 0.6.0.0 -- 2020-12-07++* Sixth version. Added multiproperties mode for propertiesTextG2 executable. Added constraint of ++B to it, too. Extended+up to 5 possible properties for the lineVariantsG2 executable. Added 'whitelines' modes. Some code and documentation+improvements. Added a new module Phonetic.Languages.Simplified.Lists.SimpleConstraints.+
GetInfo/Main.hs view
@@ -19,7 +19,7 @@ module Main where  -import Data.SubG+import Data.SubG hiding (takeWhile,dropWhile) import System.IO import Control.Concurrent import Control.Exception@@ -34,19 +34,24 @@ import Numeric (showFFloat) import Languages.UniquenessPeriods.Vector.Filters import Data.Char (isAlpha)-import Data.Statistics.RulesIntervals+import Data.Statistics.RulesIntervalsPlus import Data.MinMax.Preconditions import Phonetic.Languages.Lists.Ukrainian.PropertiesSyllablesG2 import Phonetic.Languages.Simplified.StrictVG import Phonetic.Languages.Permutations import Phonetic.Languages.Simplified.DataG import Phonetic.Languages.Simplified.Lists.Ukrainian.FuncRep2RelatedG2-+import Languages.UniquenessPeriods.Vector.Constraints.Encoded+import Phonetic.Languages.Simplified.Lists.SimpleConstraints  main :: IO () main = do- args0 <- getArgs- let args = filter (\xs -> all (/= ':') xs && all (/= '@') xs) args0+ args000 <- getArgs+ let !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      !numbersJustPrint =  filter (== "@n") args0@@ -57,7 +62,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 lInes coeffs file gzS printLine toOneLine choice+   generalProc lstW multiples lInes coeffs file gzS printLine toOneLine choice   else do    contents <- readFile file    fLinesIO contents@@ -68,21 +73,21 @@        !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 lInes coeffs file gzS printLine toOneLine choice+   generalProc lstW multiples lInes coeffs file gzS printLine toOneLine choice   else do    contents <- readFile file    fLinesIO contents -generalProc :: [String] -> Coeffs2 -> FilePath -> String -> Int -> Int -> String -> IO ()-generalProc lInes coeffs file gzS printLine toOneLine choice+generalProc :: Bool -> [String] -> [String] -> Coeffs2 -> FilePath -> String -> Int -> Int -> String -> IO ()+generalProc lstW multiples2 lInes coeffs file gzS printLine toOneLine choice  | null lInes = do     contents <- readFile file     let !flines = fLines toOneLine contents-    getData3 coeffs (getIntervalsN gzS flines) printLine choice flines+    getData3 lstW coeffs (getIntervalsNS lstW gzS flines) printLine choice multiples2 flines  | otherwise = do     contents <- readFile file-    let flines = fLines toOneLine . unlines . linesFromArgsG lInes . fLines 0 $ contents-    getData3 coeffs (getIntervalsN gzS flines) printLine choice flines+    let !flines = fLines toOneLine . unlines . linesFromArgsG lInes . fLines 0 $ contents+    getData3 lstW coeffs (getIntervalsNS lstW gzS flines) printLine choice multiples2 flines  linesFromArgs1 :: Int -> String -> [String] -> [String] linesFromArgs1 n xs yss =@@ -93,42 +98,52 @@ linesFromArgsG :: [String] -> [String] -> [String] linesFromArgsG xss yss = let n = length yss in concatMap (\ts -> linesFromArgs1 n ts yss) xss -getIntervalsN :: String -> [String] -> Int-getIntervalsN xs ys-  | xs == "s" = sturgesH (length ys)-  | xs == "l" = levynskyiMod (length ys)-  | otherwise = fromMaybe 9 (readMaybe xs::(Maybe Int))-{-# INLINE getIntervalsN #-}--getData3 :: Coeffs2 -> Int -> Int -> String -> [String] -> IO ()-getData3 coeffs gz printLine choice zs = let !permsV4 = genPermutationsVL in mapM_ (process1Line coeffs gz printLine choice permsV4) zs+getData3 :: Bool -> Coeffs2 -> Int -> Int -> String -> [String] -> [String] -> IO ()+getData3 lstW coeffs gz printLine choice multiples3 zss = let !permsV4 = genPermutationsVL in putStrLn (replicate (length multiples3 + 1) '\t' `mappend` show gz) >> mapM_ (process1Line lstW coeffs gz printLine choice multiples3 permsV4) zss -process1Line :: Coeffs2 -> Int -> Int -> String -> VB.Vector [VB.Vector Int] -> String -> IO ()-process1Line coeffs gz printLine choice !permsV5 v = bracket (do- myThread <- forkIO (do-   let !v2 = words v-       !l2 = (length v2) - 2-       ((!minE,!maxE),!data2)-         | l2 >= 0 = runEval (parTuple2 rpar rpar (minMax11C . map (toTransPropertiesF' (chooseMax id coeffs choice)) .-              uniquenessVariants2GNBL ' ' id id id (VB.unsafeIndex permsV5 l2) $ v2, toTransPropertiesF' (chooseMax id coeffs choice) . unwords . subG " 01-" $ v))-         | otherwise = let !mono = toTransPropertiesF' (chooseMax id coeffs choice) v in ((mono,mono),mono)-       (!wordsN,!intervalN)-         | l2 >= 0 = runEval (parTuple2 rpar rpar (l2 + 2, intervalNRealFrac minE maxE gz data2))-         | otherwise = (1,intervalNRealFrac data2 data2 gz data2)-       !ratio-        | l2 >= 0 = if maxE == 0.0 then 0.0 else 2.0 * data2 / (minE + maxE)-        | otherwise = 1.0 in do-          hPutStr stdout . showFFloat (precChoice choice) minE $ "\t"-          hPutStr stdout . showFFloat (precChoice choice) data2 $ "\t"-          hPutStr stdout . showFFloat (precChoice choice) maxE $ "\t"-          hPutStr stdout . showFFloat (Just 4) (data2 / minE) $ "\t"-          hPutStr stdout . showFFloat (Just 4) (maxE / minE) $ "\t"-          hPutStr stdout . showFFloat (Just 4) (maxE / data2) $ "\t"-          hPutStr stdout . showFFloat (Just 8) ratio $ "\t"-          hPutStr stdout ('\t':show (wordsN::Int))-          hPutStr stdout ('\t':show (intervalN::Int))-          hPutStrLn stdout (if printLine == 1 then '\t':v else ""))- return myThread) (killThread) (\_ -> putStr "")+process1Line :: Bool -> Coeffs2 -> Int -> Int -> String -> [String] -> VB.Vector [VB.Vector Int] -> String -> IO ()+process1Line lstW coeffs gz printLine choice multiples4 !permsV50 v+ | null multiples4 = bracket (do {+    myThread <- forkIO (do+     let !v2 = words v+         !l2 = length v2 - 2+     if l2 >= (if lstW then 1 else 0) then do+      let !permsV5 = decodeConstraint1 (fromMaybe (E 1) . readMaybeECG (l2 + 1) . showB (l2 + 2) $ lstW) .+            VB.unsafeIndex permsV50 $ l2+          ((!minE,!maxE),!data2) = runEval (parTuple2 rpar rpar (minMax11C . map (toTransPropertiesF' (chooseMax id coeffs choice )) .+                uniquenessVariants2GNBL ' ' id id id permsV5 $ v2, toTransPropertiesF' (chooseMax  id coeffs choice) . unwords . subG " 01-" $ v))+          (!wordsN,!intervalN) = (l2 + 2, intervalNRealFrac minE maxE gz data2)+          !ratio = if maxE == 0.0 then 0.0 else 2.0 * data2 / (minE + maxE)+      hPutStr stdout . showFFloat (precChoice choice) minE $ "\t"+      hPutStr stdout . showFFloat (precChoice choice) data2 $ "\t"+      hPutStr stdout . showFFloat (precChoice choice) maxE $ "\t"+      hPutStr stdout . showFFloat (Just 4) (data2 / minE) $ "\t"+      hPutStr stdout . showFFloat (Just 4) (maxE / minE) $ "\t"+      hPutStr stdout . showFFloat (Just 4) (maxE / data2) $ "\t"+      hPutStr stdout . showFFloat (Just 8) ratio $ "\t"+      hPutStr stdout ('\t':show (wordsN::Int))+      hPutStr stdout ('\t':show (intervalN::Int))+      hPutStrLn stdout (if printLine == 1 then '\t':v else "")+     else putStrLn (replicate (length multiples4) '\t' ++ if printLine == 1 then '\t':v else ""))+   ; return myThread }) (killThread) (\_ -> putStr "")+ | otherwise = bracket (do {+   myThread <- forkIO (do+    let !v2 = words v+        !l2 = length v2 - 2+    if l2 >= (if lstW then 1 else 0) then do+     let !permsV5 = decodeConstraint1 (fromMaybe (E 1) . readMaybeECG (l2 + 1) . showB (l2 + 2) $ lstW) .+            VB.unsafeIndex permsV50 $ l2+         rs = parMap rpar (\choiceMMs -> (minMax11C .+           map (toTransPropertiesF' (chooseMax id coeffs choiceMMs)) .+             uniquenessVariants2GNBL ' ' id id id permsV5 $ v2,+               toTransPropertiesF' (chooseMax  id coeffs choiceMMs) . unwords . subG " 01-" $ v,gz)) multiples4+         (!wordsN,!intervalNs) = (l2 + 2, map (\((!x,!y),!z,!t) -> intervalNRealFrac x y t z) rs)+           in do+            hPutStr stdout (show (wordsN::Int))+            mapM_ (\i -> hPutStr stdout ('\t':show (i::Int))) intervalNs+            hPutStrLn stdout (if printLine == 1 then '\t':v else "")+    else putStrLn (replicate (length multiples4) '\t' ++ if printLine == 1 then '\t':v else ""))+  ; return myThread }) (killThread) (\_ -> putStr "")  fLines :: Int -> String -> [String] fLines !toOneLine ys =
+ Phonetic/Languages/Simplified/Lists/SimpleConstraints.hs view
@@ -0,0 +1,17 @@+-- |+-- Module      :  Phonetic.Languages.Simplified.Lists.SimpleConstraints+-- Copyright   :  (c) OleksandrZhabenko 2020+-- License     :  MIT+-- Stability   :  Experimental+-- Maintainer  :  olexandr543@yahoo.com+--+-- Some code shared for different Main modules.++module Phonetic.Languages.Simplified.Lists.SimpleConstraints where++import Data.Monoid++showB :: Int -> Bool -> String+showB n bool+ | n >= 2 && bool == True = 'B':show (n - 1) `mappend` concatMap show [0..n - 2]+ | otherwise = ""
README.md view
@@ -1,5 +1,4 @@ The short (possibly) instruction how to use the programs of the package phonetic-languages-simplified-lists-examples in Ukrainian is here: -https://web.archive.org/web/20201203144040/https://oleksandrzhabenko.github.io/uk/%D0%9A%D0%BE%D1%80%D0%BE%D1%82%D0%BA%D0%B0_%D1%96%D0%BD%D1%81%D1%82%D1%80%D1%83%D0%BA%D1%86%D1%96%D1%8F_%D1%89%D0%BE%D0%B4%D0%BE_%D0%BA%D0%BE%D1%80%D0%B8%D1%81%D1%82%D1%83%D0%B2%D0%B0%D0%BD%D0%BD%D1%8F_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%B0%D0%BC%D0%B8_%D0%BF%D0%B0%D0%BA%D0%B5%D1%82%D1%83_phonetic-languages-simplified-lists-examples-0.4.0.0.pdf-+https://web.archive.org/web/20201207224536/https://oleksandrzhabenko.github.io/uk/%D0%9A%D0%BE%D1%80%D0%BE%D1%82%D0%BA%D0%B0_%D1%96%D0%BD%D1%81%D1%82%D1%80%D1%83%D0%BA%D1%86%D1%96%D1%8F_%D1%89%D0%BE%D0%B4%D0%BE_%D0%BA%D0%BE%D1%80%D0%B8%D1%81%D1%82%D1%83%D0%B2%D0%B0%D0%BD%D0%BD%D1%8F_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%B0%D0%BC%D0%B8_%D0%BF%D0%B0%D0%BA%D0%B5%D1%82%D1%83_phonetic-languages-simplified-lists-examples-0.6.0.0.pdf
Simple/Main.hs view
@@ -6,7 +6,6 @@ -- Maintainer  :  olexandr543@yahoo.com -- -- Prints the rearrangements with the \"property\" information for the Ukrainian language text.--- The most interesting is the first line of the output. But other ones also are noteworthy.  {-# OPTIONS_GHC -threaded -rtsopts #-} @@ -33,6 +32,7 @@ import Data.MinMax.Preconditions import Text.Read (readMaybe) import Phonetic.Languages.Simplified.Lists.DeEnCoding+import Phonetic.Languages.Simplified.Lists.SimpleConstraints   -- | Prints the rearrangements with the \"property\" information for the Ukrainian language text. The first command line argument must be a@@ -41,7 +41,7 @@ -- sequenced without interruptions further are treated as the numbers of the intervals (counting is started from 1) which values are moved to the maximum -- values of the metrics interval using the 'unsafeSwapVecIWithMaxI' function. The first textual command line argument should be in the form either \"y0\", -- or \"0y\", or \"yy\", or \"y\", or \"02y\", or \"y2\", or \"03y\", or \"yy2\", or \"y3\", or some other variant and specifies, which property or properties is or are evaluated.--- The rest of the command line arguments is the Ukrainian text. Besides, you can use multiple metrices (no more than 4 different ones) together by+-- The rest of the command line arguments is the Ukrainian text. Besides, you can use multiple metrices (no more than 5 different ones) together by -- using \"+M\" ... \"-M\" command line arguments. -- -- You can specify constraints according to the 'decodeLConstraints' function between +A and -A command line arguments. If so, the program will@@ -63,22 +63,17 @@  if isPair coeffs then generalProc2 toFileMode1 interactiveP jstL0 args0 coeffs (drop 1 args) lstW  else generalProc2 toFileMode1 interactiveP jstL0 args0 coeffs args lstW -showB :: Int -> Bool -> String-showB n bool- | n >= 2 && bool == True = 'B':show (n - 1) `mappend` concatMap show [0..n - 2]- | otherwise = ""--forMultipleMetrices :: [String] -> [(String,[String])]-forMultipleMetrices (xs:xss)- | any isAlpha xs = (xs,yss):forMultipleMetrices zss+forMultiplePropertiesF :: [String] -> [(String,[String])]+forMultiplePropertiesF (xs:xss)+ | any isAlpha xs = (xs,yss):forMultiplePropertiesF zss  | otherwise = []      where l = length . takeWhile (all isDigit) $ xss            (yss,zss) = splitAt l xss-forMultipleMetrices _ = []+forMultiplePropertiesF _ = []  generalProc2 :: FilePath -> Bool -> Bool -> [String] -> Coeffs2 -> [String] -> Bool -> IO () generalProc2 toFile1 interactive jstL0 args0 coeffs args lstW2 = do-  let !argMss = take 4 . filter (not . null) . forMultipleMetrices . 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 . unwords . drop 1 $ textualArgs@@ -131,8 +126,8 @@      mapM_ putStrLn datas      putStrLn ""      putStrLn "Please, specify the variant which you would like to become the resulting string by its number. "-     numb <- getLine-     let !lineRes = concat . filter ((numb `mappend` "\t")`L.isPrefixOf`) $ datas+     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  printWarning :: String -> IO String@@ -156,28 +151,20 @@     return . fst . maximumGroupsClassificationR arg0 . map (toResultR frep2) $ variants1  generalProcMMs :: Bool -> FilePath -> Coeffs2 -> [(VB.Vector Int,Int,Int,String)] -> [VB.Vector Int] -> [String] -> IO ()-generalProcMMs interactiveMM file coeffs rs perms subs- | null rs = putStrLn "No data has been specified to control the computation process. "- | otherwise = do-    genVariants <- mapM (generalProcMs coeffs perms subs) rs-    let !lineVs = map (map line) genVariants-        !l3 = length lineVs-    case l3 of-     4 -> finalProc interactiveMM file id ll-       where [!l10,!l20,!l30,!l40] = lineVs-             !l12 = intersectInterResults l10 l20-             !l34 = intersectInterResults l30 l40-             !ll = intersectInterResults l12 l34-     3 -> finalProc interactiveMM file id ll-       where [!l10,!l20,!l30] = lineVs-             !l12 = intersectInterResults l10 l20-             !ll = intersectInterResults l12 l30-     2 -> finalProc interactiveMM file id ll-       where [!l10,!l20] = lineVs-             !ll = intersectInterResults l10 l20-     _ -> putStrLn "You have specified just one variant of the metrices. " >> do-           temp <- generalProcMs coeffs perms subs (head rs)-           finalProc interactiveMM file line temp+generalProcMMs interactiveMM file coeffs rs perms subs =+ case length rs of+  0 -> putStrLn "No data has been specified to control the computation process. "+  1 -> putStrLn "You have specified just one variant of the metrices. " >> do+        temp <- generalProcMs coeffs perms subs (head rs)+        finalProc interactiveMM file line temp+  _ -> do+         genVariants <- mapM (generalProcMs coeffs perms subs) rs+         finalProc interactiveMM file 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
phonetic-languages-simplified-lists-examples.cabal view
@@ -1,8 +1,8 @@--- Initial phonetic-languages-examples.cabal generated by cabal init.  For+-- Initial phonetic-languages-simplified-lists-examples.cabal generated by cabal init.  For -- further documentation, see http://haskell.org/cabal/users-guide/  name:                phonetic-languages-simplified-lists-examples-version:             0.5.0.0+version:             0.6.0.0 synopsis:            Simplified and somewhat optimized version of the phonetic-languages-examples. description:         Is intended to use more functionality of lists and subG package. homepage:            https://hackage.haskell.org/package/phonetic-languages-simplified-lists-examples@@ -17,7 +17,7 @@ cabal-version:       >=1.10  library-  exposed-modules:     Phonetic.Languages.Simplified.Lists.Ukrainian.FuncRep2RelatedG2, Phonetic.Languages.Simplified.Lists.DeEnCoding+  exposed-modules:     Phonetic.Languages.Simplified.Lists.Ukrainian.FuncRep2RelatedG2, Phonetic.Languages.Simplified.Lists.DeEnCoding, Phonetic.Languages.Simplified.Lists.SimpleConstraints   -- other-modules:   other-extensions:    BangPatterns   build-depends:       base >=4.8 && <4.15, phonetic-languages-simplified-common >=0.4 && <1, phonetic-languages-simplified-properties-lists-double >=0.1 && <1, vector >=0.11 && < 0.14, mmsyn2 >=0.3 && <1, phonetic-languages-constraints >=0.4 && <1, heaps >= 0.3.6.1 && <1@@ -26,27 +26,27 @@  executable lineVariantsG2   main-is:             Main.hs-  other-modules:       Phonetic.Languages.Simplified.Lists.Ukrainian.FuncRep2RelatedG2, Phonetic.Languages.Simplified.Lists.DeEnCoding+  other-modules:       Phonetic.Languages.Simplified.Lists.Ukrainian.FuncRep2RelatedG2, Phonetic.Languages.Simplified.Lists.DeEnCoding, Phonetic.Languages.Simplified.Lists.SimpleConstraints   other-extensions:    BangPatterns-  build-depends:       base >=4.8 && <4.15, ukrainian-phonetics-basic >=0.4.1 && <1, vector >=0.11 && <0.14, phonetic-languages-simplified-common >=0.4 && <1, phonetic-languages-simplified-properties-lists-double >=0.1 && <1, print-info >=0.1.3 && <1, phonetic-languages-ukrainian >=0.3 && <1, uniqueness-periods-vector-filters >=0.3 && <1, vector >=0.11 && <0.14, phonetic-languages-plus >=0.1.1 && <1, subG >=0.4 && < 1, mmsyn2 >= 0.3 && <1, phonetic-languages-constraints >=0.4 && <1, phonetic-languages-permutations >= 0.2 && <1, heaps >= 0.3.6.1 && <1+  build-depends:       base >=4.8 && <4.15, ukrainian-phonetics-basic >=0.4.1 && <1, vector >=0.11 && <0.14, phonetic-languages-simplified-common >=0.4 && <1, phonetic-languages-simplified-properties-lists-double >=0.1 && <1, print-info >=0.1.3 && <1, phonetic-languages-ukrainian >=0.3 && <1, uniqueness-periods-vector-filters >=0.3 && <1, vector >=0.11 && <0.14, phonetic-languages-plus >=0.2 && <1, subG >=0.4 && < 1, mmsyn2 >= 0.3 && <1, phonetic-languages-constraints >=0.4 && <1, phonetic-languages-permutations >= 0.2 && <1, heaps >= 0.3.6.1 && <1   ghc-options:         -threaded -rtsopts   hs-source-dirs:      ., Simple   default-language:    Haskell2010  executable rewritePoemG2   main-is:             Main.hs-  other-modules:       Phonetic.Languages.Simplified.Lists.Ukrainian.FuncRep2RelatedG2, Phonetic.Languages.Simplified.Lists.DeEnCoding+  other-modules:       Phonetic.Languages.Simplified.Lists.Ukrainian.FuncRep2RelatedG2, Phonetic.Languages.Simplified.Lists.DeEnCoding, Phonetic.Languages.Simplified.Lists.SimpleConstraints   other-extensions:    BangPatterns-  build-depends:       base >=4.8 && <4.15, ukrainian-phonetics-basic >=0.4.1 && <1, vector >=0.11 && <0.14, phonetic-languages-simplified-common >=0.4 && <1, phonetic-languages-simplified-properties-lists-double >=0.1 && <1, print-info >=0.1.3 && <1, phonetic-languages-ukrainian >=0.3 && <1, uniqueness-periods-vector-filters >=0.3 && <1, vector >=0.11 && <0.14, phonetic-languages-plus >=0.1.1 && <1, subG >= 0.4 && < 1, phonetic-languages-rhythmicity >=0.1.2 && <1, mmsyn2 >=0.3 && <1, phonetic-languages-constraints >=0.4 && <1, phonetic-languages-permutations >= 0.2 && <1, heaps >= 0.3.6.1 && <1+  build-depends:       base >=4.8 && <4.15, ukrainian-phonetics-basic >=0.4.1 && <1, vector >=0.11 && <0.14, phonetic-languages-simplified-common >=0.4 && <1, phonetic-languages-simplified-properties-lists-double >=0.1 && <1, print-info >=0.1.3 && <1, phonetic-languages-ukrainian >=0.3 && <1, uniqueness-periods-vector-filters >=0.3 && <1, vector >=0.11 && <0.14, phonetic-languages-plus >=0.2 && <1, subG >= 0.4 && < 1, phonetic-languages-rhythmicity >=0.1.2 && <1, mmsyn2 >=0.3 && <1, phonetic-languages-constraints >=0.4 && <1, phonetic-languages-permutations >= 0.2 && <1, heaps >= 0.3.6.1 && <1   ghc-options:         -threaded -rtsopts   hs-source-dirs:      ., Lines   default-language:    Haskell2010  executable propertiesTextG2   main-is:             Main.hs-  other-modules:       Phonetic.Languages.Simplified.Lists.Ukrainian.FuncRep2RelatedG2, Phonetic.Languages.Simplified.Lists.DeEnCoding+  other-modules:       Phonetic.Languages.Simplified.Lists.Ukrainian.FuncRep2RelatedG2, Phonetic.Languages.Simplified.Lists.DeEnCoding, Phonetic.Languages.Simplified.Lists.SimpleConstraints   other-extensions:    BangPatterns-  build-depends:       base >=4.8 && <4.15, ukrainian-phonetics-basic >=0.4.1 && <1, vector >=0.11 && <0.14, phonetic-languages-simplified-common >=0.4 && <1, phonetic-languages-simplified-properties-lists-double >=0.1 && <1, phonetic-languages-ukrainian >=0.3 && <1, uniqueness-periods-vector-filters >=0.3 && <1, uniqueness-periods-vector-stats >=0.2.1 && <1, parallel >=3.2.0.6 && <4, phonetic-languages-plus >=0.1.1 && <1, subG >= 0.4 && < 1, phonetic-languages-rhythmicity >=0.1.2 && <1, phonetic-languages-permutations >= 0.2 && <1, mmsyn2 >= 0.3 && < 1, heaps >= 0.3.6.1 && <1+  build-depends:       base >=4.8 && <4.15, ukrainian-phonetics-basic >=0.4.1 && <1, vector >=0.11 && <0.14, phonetic-languages-simplified-common >=0.4 && <1, phonetic-languages-simplified-properties-lists-double >=0.1 && <1, phonetic-languages-ukrainian >=0.3 && <1, uniqueness-periods-vector-filters >=0.3 && <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 >= 0.2 && <1, mmsyn2 >= 0.3 && < 1, heaps >= 0.3.6.1 && <1, phonetic-languages-constraints >= 0.4 && <1   ghc-options:         -threaded -rtsopts   hs-source-dirs:      ., GetInfo   default-language:    Haskell2010