phonetic-languages-examples (empty) → 0.1.0.0
raw patch · 8 files changed
+425/−0 lines, 8 filesdep +basedep +paralleldep +phonetic-languages-commonsetup-changed
Dependencies added: base, parallel, phonetic-languages-common, phonetic-languages-general, phonetic-languages-plus, phonetic-languages-properties, phonetic-languages-ukrainian, phonetic-languages-vector, print-info, subG, ukrainian-phonetics-basic, uniqueness-periods-vector-filters, uniqueness-periods-vector-stats, vector
Files
- CHANGELOG.md +5/−0
- GetInfo/Main.hs +118/−0
- LICENSE +20/−0
- Languages/UniquenessPeriods/Vector/FuncRepRelatedG.hs +37/−0
- Lines/Main.hs +123/−0
- Setup.hs +2/−0
- Simple/Main.hs +68/−0
- phonetic-languages-examples.cabal +52/−0
+ CHANGELOG.md view
@@ -0,0 +1,5 @@+# Revision history for phonetic-languages-examples++## 0.1.0.0 -- 2020-10-30++* First version. Released on an unsuspecting world.
+ GetInfo/Main.hs view
@@ -0,0 +1,118 @@+-- |+-- Module : Main+-- Copyright : (c) OleksandrZhabenko 2020+-- License : MIT+-- Stability : Experimental+-- Maintainer : olexandr543@yahoo.com+--+-- Analyzes a poetic text in Ukrainian, for every line prints statistic data and+-- then for the whole poem prints the hypothesis evaluation information. Since the 0.4.0.0 version+-- the program tries to be more accurate in cases of the lines consisting entirely of the words+-- which are unique in phonetic meaning alongside the line. Another hypothesis is for the seventh command line+-- argument (since the 0.12.0.0 version) equal to \"y0\" that the distribution+-- of the placement of the actual poetic text in Ukrainian is not one of the standard distributions.+-- It can probably have approximately a form of and is different for different authors:+--+-- > -- -- --+-- > / \_/ \_/ \+--+-- To enable parallel computations (potentially, they can speed up the work), please, run the @propertiesText@ executable with+-- @+RTS -threaded -RTS@ command line options with possibly @-N@ option inside.+--++{-# OPTIONS_GHC -threaded -rtsopts #-}++{-# LANGUAGE BangPatterns, FlexibleContexts #-}++module Main where+++import Data.SubG+import System.IO+import Control.Concurrent+import Control.Exception+import Control.Parallel.Strategies+import Data.Maybe (fromMaybe)+import Text.Read (readMaybe)+import qualified Data.Vector as VB+import Languages.UniquenessPeriods.Vector.General.DebugG hiding (newLineEnding)+import Languages.UniquenessPeriods.Vector.PropertiesG+import Melodics.ByteString.Ukrainian+import System.Environment+import Languages.Phonetic.Ukrainian.PrepareText+import Languages.UniquenessPeriods.Vector.DataG+import Languages.UniquenessPeriods.Vector.AuxiliaryG+import Languages.UniquenessPeriods.Vector.StrictVG+import Numeric (showFFloat)+import Languages.UniquenessPeriods.Vector.Filters+import Data.Char (isAlpha)+import Data.Statistics.RulesIntervals+import Languages.UniquenessPeriods.Vector.FuncRepRelatedG++main :: IO ()+main = do+ args <- getArgs+ let !file = concat . take 1 $ args -- The first command line arguments except those ones that are RTS arguments+ !gzS = concat . take 1 . drop 1 $ args -- The second command line argument that controls the choice of the number of intervals+ !printLine = fromMaybe 0 (readMaybe (concat . take 1 . drop 2 $ args)::(Maybe Int)) -- The third 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 3 $ args)::(Maybe Int)) -- The fourth 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)+ !compareMode = 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 print the original version and the concatenated one's (into one line) analyses.+ !twoInParallel = fromMaybe 1 (readMaybe (concat . take 1 . drop 5 $ args)::(Maybe Int)) -- The sixth command line argument that controls whether if the fifth command line argument is set to \"1\" then the evaluation is done in parallel or not (set to \"1\" --- the default one --- if you would like to evaluate in parallel, otherwise --- just usual sequential evaluation).+ !choice = concat . drop 6 . take 7 $ args -- The seventh command line argument that controls what properties are used.+ contents <- readFile file+ if compareMode == 0 then do+ let !flines = fLines toOneLine contents+ innerProc gzS printLine choice flines+ else let tau !k = (let !flines1 = fLines k contents in innerProc gzS printLine choice flines1) in+ case twoInParallel of+ 1 -> ($|) sequence_ rpar (map tau [1, 0])+ _ -> mapM_ tau [1, 0]++innerProc :: String -> Int -> String -> VB.Vector (VB.Vector Char) -> IO ()+innerProc gzS printLine choice flInes = getData3 (getIntervalsN gzS flInes) printLine choice flInes++getIntervalsN :: String -> VB.Vector (VB.Vector Char) -> Int+getIntervalsN xs yss+ | xs == "s" = sturgesH (VB.length yss)+ | xs == "l" = levynskyiMod (VB.length yss)+ | otherwise = fromMaybe 9 (readMaybe xs::(Maybe Int))+{-# INLINE getIntervalsN #-}++getData3 :: Int -> Int -> String -> VB.Vector (VB.Vector Char) -> IO ()+getData3 gz printLine choice v4 = do+ let !permsV = genPermutationsV+ VB.mapM_ (\v -> bracket (do+ myThread <- forkIO (+ let !whspss = VB.fromList " 01-"+ !v2 = subG whspss v+ !l2 = (subtract 2) . VB.length $ v2+ (!maxE,!minE,!data2)+ | compare l2 0 /= LT = runEval (parTuple3 rpar rpar rpar ((\k -> if k == 0.0 then 1.0 else k) . (\ls -> if null ls then 0.0 else head ls) .+ firstFrom3 . maximumElBy 1 (VB.singleton oneProperty) $+ UL2 (VB.empty,uniquenessVariants2GNB ' ' id id id (VB.unsafeIndex permsV l2) (VB.singleton oneProperty) (chooseMax choice) v2),+ (\k -> if k == 0.0 then 1.0 else k) . abs . (\ls -> if null ls then 0.0 else head ls) .+ firstFrom3 . maximumElBy 1 (VB.singleton oneProperty) $+ UL2 (VB.empty,uniquenessVariants2GNB ' ' id id id (VB.unsafeIndex permsV l2) (VB.singleton oneProperty) (chooseMin choice) v2),+ (\k -> if k == 0.0 then 1.0 else k) . head . getAC (chooseMax choice) $ v))+ | otherwise = let !mono = (\k -> if k == 0.0 then 1.0 else k) . head . getAC (chooseMax choice) $ v in (mono,mono,mono)+ (!wordsN,!intervalN)+ | maxE == 1.0 = (0, 0)+ | otherwise = runEval (parTuple2 rpar rpar (l2 + 2, intervalNRealFrac minE maxE gz data2))+ !ratio = if maxE == 1.0 then 0.0 else 2.0 * data2 / (minE + maxE) 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 / data2) $ "\t"+ hPutStr stdout . showFFloat (Just 4) (maxE / data2) $ "\t"+ hPutStr stdout . showFFloat Nothing ratio $ "\t"+ hPutStr stdout ('\t':show (wordsN::Int))+ hPutStr stdout ('\t':show (intervalN::Int))+ hPutStrLn stdout (if printLine == 1 then '\t':(VB.toList v) else ""))+ return myThread) (\myThread -> killThread myThread) (\_ -> hPutStr stdout "")) v4+{-# INLINABLE getData3 #-}++fLines :: Int -> String -> VB.Vector (VB.Vector Char)+fLines !toOneLine = VB.map VB.fromList . VB.fromList . filter (any (\x -> isUkrainianL x && isAlpha x)) . prepareText .+ (\z -> if toOneLine == 1 then unwords . words $ z else z)+{-# INLINE fLines #-}
+ LICENSE view
@@ -0,0 +1,20 @@+Copyright (c) 2020 OleksandrZhabenko++Permission is hereby granted, free of charge, to any person obtaining+a copy of this software and associated documentation files (the+"Software"), to deal in the Software without restriction, including+without limitation the rights to use, copy, modify, merge, publish,+distribute, sublicense, and/or sell copies of the Software, and to+permit persons to whom the Software is furnished to do so, subject to+the following conditions:++The above copyright notice and this permission notice shall be included+in all copies or substantial portions of the Software.++THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.+IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,+TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE+SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ Languages/UniquenessPeriods/Vector/FuncRepRelatedG.hs view
@@ -0,0 +1,37 @@+-- |+-- Module : Languages.UniquenessPeriods.Vector.FuncRepRelatedG+-- Copyright : (c) OleksandrZhabenko 2020+-- License : MIT+-- Stability : Experimental+-- Maintainer : olexandr543@yahoo.com+--+-- Functions to choose from the 'FuncRep' variants.++module Languages.UniquenessPeriods.Vector.FuncRepRelatedG where++import qualified Data.Vector as VB+import Languages.UniquenessPeriods.Vector.DataG+import String.Languages.UniquenessPeriods.VectorG+import Languages.UniquenessPeriods.Vector.PropertiesFuncRepG++-- | Allows to choose the variant of the computations in case of usual processment.+chooseMax :: String -> FuncRep (VB.Vector Char) (UniquenessGeneral2 Char) [Float]+chooseMax xs+ | xs == "y0" = procDiverse2F+ | xs == "0y" = procRhythmicity23F+ | xs == "y" = procBothF+ | otherwise = procBothInvF++-- | Allows to choose the variant of the computations in case of minimum lookup. Uses @-neg@ variants.+chooseMin :: String -> FuncRep (VB.Vector Char) (UniquenessGeneral2 Char) [Float]+chooseMin xs+ | xs == "y0" = procDiverse2Fneg+ | xs == "0y" = procRhythmicity23Fneg+ | xs == "y" = procBothFneg+ | otherwise = procBothInvFneg++-- | Allows to choose precision in the Numeric.showFFloat function being given a choice parameter.+precChoice :: String -> Maybe Int+precChoice xs+ | xs == "y0" || xs == "y" || xs == "0y" = Just 0+ | otherwise = Just 4
+ Lines/Main.hs view
@@ -0,0 +1,123 @@+-- |+-- Module : Main+-- Copyright : (c) OleksandrZhabenko 2020+-- License : MIT+-- Stability : Experimental+-- Maintainer : olexandr543@yahoo.com+--+-- Inspired by: https://functional-art.org/2020/papers/Poetry-OleksandrZhabenko.pdf from the https://functional-art.org/2020/performances ;+-- Allows to rewrite the given text (usually a poetical one).++{-# OPTIONS_GHC -threaded -rtsopts #-}++{-# LANGUAGE BangPatterns, FlexibleContexts #-}++module Main where++import Data.SubG+import Control.Parallel.Strategies+import qualified Data.Vector as VB+import Data.List (sort)+import Languages.UniquenessPeriods.Vector.PropertiesG+import Languages.UniquenessPeriods.Vector.General.DebugG+import Languages.UniquenessPeriods.Vector.StrictVG+import Languages.UniquenessPeriods.Vector.Filters (unsafeSwapVecIWithMaxI)+import Text.Read (readMaybe)+import Data.Maybe (fromMaybe)+import System.Environment+import Languages.Phonetic.Ukrainian.PrepareText+import Languages.UniquenessPeriods.Vector.DataG+import Languages.UniquenessPeriods.Vector.AuxiliaryG+import Data.Char (isDigit)+import Languages.UniquenessPeriods.Vector.FuncRepRelatedG++-- | The function allows to rewrite the Ukrainian text in the file given as the first command line argument to a new file. In between, it is rewritten+-- so that every last word on the lines is preserved at its position, and the rest of the line is rearranged using the specified other command line+-- arguments. They are general for the whole program. The first command line argument is a FilePath to the file with a Ukrainian text to be rewritten.+-- The second one is a variant of the metrics (\"properties\") used to evaluate the variants.+-- The further command line arguments are: the number of the intervals and the numbers of the intervals+-- that are swapped with the maximum one so that they are available for further usage by the program. See documentation for @uniqueness-periods-vector-filters@+-- package+-- 'https://hackage.haskell.org/package/uniqueness-periods-vector-filters'+--+main :: IO ()+main = do+ args <- getArgs+ let !numericArgs = filter (all isDigit) . drop 2 $ args+ !choice = concat . drop 1 . take 2 $ args+ !numberI = fromMaybe 1 (readMaybe (concat . take 1 $ numericArgs)::Maybe Int)+ !file = concat . take 1 $ args+ !permsV = VB.force genPermutationsV+ contents <- readFile file+ let !flines = prepareText contents+ !lasts = map (\ts -> if null . words $ ts then [] else last . words $ ts) flines+ !l = (subtract 3) . length . words . concat . take 1 $ flines+ !whspss = VB.fromList " 01-"+ if compare numberI 2 == LT then do+ let !zs = if compare l 0 == LT then concat . take 1 $ flines else VB.toList . lastFrom3 . headU2 . fst . get22 .+ uniqNProperties2GN ' ' whspss id id id (VB.unsafeIndex permsV l) (PA VB.empty (VB.fromList . concat . take 1 $ lasts)) 1 1 (VB.singleton oneProperty) (chooseMax choice) . VB.fromList . unwords . init . words . concat . take 1 $ flines+ toFileStr (file ++ ".new.txt") (zs:(noDoubleWords . circle2 permsV (concat . take 1 $ lasts) choice [] . drop 1 $ flines))+ else do+ let !intervalNmbrs = (\vs -> if null vs then VB.singleton numberI else VB.uniq . VB.fromList $ vs) . sort . filter (<= numberI) .+ map (\t -> fromMaybe numberI (readMaybe t::Maybe Int)) . drop 2 $ numericArgs+ !us = words . concat . take 1 $ flines+ !l2 = (subtract 3) . length $ us+ if compare l2 0 /= LT then do+ let !perms2 = VB.force . VB.unsafeIndex permsV $ l2+ !v = if compare l2 0 == LT then VB.empty else VB.fromList . unwords . init $ us+ !v2 = subG whspss v+ (!maxE,!minE) = runEval (parTuple2 rpar rpar ((\k -> if k == 0.0 then 1.0 else k) . (\rs -> if null rs then 0.0 else head rs) . firstFrom3 .+ maximumElBy 1 (VB.singleton oneProperty) $ UL2 (VB.empty,uniquenessVariants2GNB ' ' id id id perms2 (VB.singleton oneProperty) (chooseMax choice) $ v2), (\k -> if k == 0.0 then 1.0 else k) . abs .+ (\rs -> if null rs then 0.0 else head rs) . firstFrom3 . maximumElBy 1 (VB.singleton oneProperty) $+ UL2 (VB.empty,uniquenessVariants2GNB ' ' id id id perms2 (VB.singleton oneProperty) (chooseMin choice) $ v2)))+ !zs = if compare l2 0 == LT then concat . take 1 $ flines else VB.toList . lastFrom3 . headU2 . fst . get22 .+ uniqNProperties2GN ' ' whspss id id id perms2 (PA VB.empty (VB.fromList . concat . take 1 $ lasts)) 1 1 (VB.singleton (unsafeSwapVecIWithMaxI minE maxE numberI intervalNmbrs . oneProperty)) (chooseMax choice) $ v+ toFile (file ++ ".new.txt") (zs:(noDoubleWords . circle2I permsV whspss (concat . take 1 $ lasts) choice [] numberI intervalNmbrs minE maxE . drop 1 $ flines))+ else toFileStr (file ++ ".new.txt") ((concat . take 1 $ flines):(noDoubleWords . circle2I permsV whspss (concat . take 1 $ lasts) choice [] numberI intervalNmbrs 0.0 0.0 . drop 1 $ flines))+++-- | Processment without rearrangements.+circle2 :: VB.Vector (VB.Vector (VB.Vector Int)) -> String -> String -> [String] -> [String] -> [String]+circle2 permsG1 xs choice yss xss+ | null xss = yss+ | otherwise = circle2 permsG1 (if null rs then [] else last rs) choice (ws:yss) tss+ where (!zss,!tss) = splitAt 1 xss+ !rs = words . concat $ zss+ !ws = if compare (length rs) 3 == LT then unwords (xs:rs) else VB.toList . lastFrom3 . headU2 . fst . get22 .+ uniqNProperties2GN ' ' (VB.fromList " 01-") id id id (VB.unsafeIndex permsG1 $ length rs - 3) (PA (VB.fromList xs) (VB.fromList . last $ rs)) 1 1 (VB.singleton oneProperty) (chooseMax choice) . VB.fromList . unwords . init $ rs++-- | Processment with rearrangements.+circle2I :: VB.Vector (VB.Vector (VB.Vector Int)) -> VB.Vector Char -> String -> String -> [String] -> Int -> VB.Vector Int -> Float -> Float -> [String] -> [String]+circle2I permsG1 whspss xs choice yss numberI vI minE maxE xss+ | null xss = yss+ | otherwise = circle2I permsG1 whspss (if null rs then [] else last rs) choice (ws:yss) numberI vI minE1 maxE1 tss+ where (!zss,!tss) = splitAt 1 xss+ !w2s = words . concat . take 1 $ tss+ !l3 = (subtract 3) . length $ w2s+ !rs = words . concat $ zss+ !ws = if compare (length rs) 3 == LT then unwords (xs:rs) else VB.toList . lastFrom3 . headU2 . fst . get22 .+ uniqNProperties2GN ' ' (VB.fromList " 01-") id id id (VB.unsafeIndex permsG1 $ length rs - 3) (PA (VB.fromList xs) (VB.fromList . last $ rs)) 1 1 (VB.singleton (unsafeSwapVecIWithMaxI minE maxE numberI vI .+ oneProperty)) (chooseMax choice) . VB.fromList . unwords . init $ rs+ (!maxE1,!minE1)+ | compare l3 0 /= LT =+ let !perms3 = VB.force . VB.unsafeIndex permsG1 $ l3+ !v3 = VB.fromList . unwords . init $ w2s+ !v4 = subG whspss v3 in runEval (parTuple2 rpar rpar ((\k -> if k == 0.0 then 1.0 else k) . (\ls -> if null ls then 0.0 else head ls) .+ firstFrom3 . maximumElBy 1 (VB.singleton oneProperty) $ UL2 (VB.empty,+ uniquenessVariants2GNB ' ' id id id perms3 (VB.singleton oneProperty) (chooseMax choice) $ v4),+ (\k -> if k == 0.0 then 1.0 else k) . abs . (\ls -> if null ls then 0.0 else head ls) . firstFrom3 .+ maximumElBy 1 (VB.singleton oneProperty) $+ UL2 (VB.empty,uniquenessVariants2GNB ' ' id id id perms3 (VB.singleton oneProperty) (chooseMin choice) $ v4)))+ | otherwise = (0.0,0.0)++headU2+ :: (Foldable t, Foldable t2, InsertLeft t a, Monoid (t a), Monoid (t (t a)), Monoid (t2 b)) => VB.Vector (UniquenessG1T2 t t2 a b)+ -> UniquenessG1T2 t t2 a b+headU2 v+ | VB.null v = (mempty, VB.empty,mempty)+ | otherwise = VB.unsafeIndex v 0+{-# INLINE headU2 #-}++noDoubleWords :: [String] -> [String]+noDoubleWords = map (unwords . drop 1 . words)+{-# INLINE noDoubleWords #-}
+ Setup.hs view
@@ -0,0 +1,2 @@+import Distribution.Simple+main = defaultMain
+ Simple/Main.hs view
@@ -0,0 +1,68 @@+-- |+-- Module : Main+-- Copyright : (c) OleksandrZhabenko 2020+-- License : MIT+-- Stability : Experimental+-- 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 #-}++{-# LANGUAGE BangPatterns #-}++module Main where++import Control.Parallel.Strategies+import qualified Data.Vector as VB+import Data.Print.Info+import Languages.UniquenessPeriods.Vector.General.DebugG+import Languages.UniquenessPeriods.Vector.AuxiliaryG+import Languages.UniquenessPeriods.Vector.PropertiesG+import Languages.UniquenessPeriods.Vector.Filters+import Languages.UniquenessPeriods.Vector.StrictVG+import Languages.Phonetic.Ukrainian.PrepareText+import Languages.UniquenessPeriods.Vector.DataG+import Data.Char (isDigit)+import qualified Data.List as L (span,sort,permutations)+import Languages.UniquenessPeriods.Vector.FuncRepRelatedG+import Data.SubG+import System.Environment+import Data.Maybe+import Text.Read (readMaybe)+++-- | Prints the rearrangements with the \"property\" information for the Ukrainian language text. The first command line argument must be a+-- positive 'Int' number and is a number of printed variants for the line (if they are present, otherwise just all possible variants are printed).+-- The second one is the number of the intervals into which the all range of possible metrics values are divided. The next numeric arguments that must be+-- 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\" and specifies, which property or properties is or are evaluated.+-- The rest of the command line arguments is the Ukrainian text.+--+-- The most interesting is the first line of the output. But other ones also are noteworthy.+main :: IO ()+main = do+ args <- getArgs+ let (!numericArgs,!textualArgs) = L.span (all isDigit) args+ !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+ !xs = concat . take 1 . prepareText . unwords . drop 1 $ textualArgs+ !l = length . words $ xs+ !v = VB.fromList xs+ !whspss = VB.fromList " 01-"+ !perms = genPermutations l+ !subs = subG whspss v+ if compare numberI 2 == LT then printUniquenessG1VChar (I1 H) . fst . get22 . uniqNProperties2GN ' ' (VB.fromList " 01-") id id id perms K arg0 1 (VB.singleton (oneProperty))+ (chooseMax choice) $ v+ else do+ let !intervalNmbrs = (\zs -> if null zs then VB.singleton numberI else VB.uniq . VB.fromList $ zs) . L.sort . filter (<= numberI) . map (\t -> fromMaybe numberI $ (readMaybe t::Maybe Int)) . drop 2 $ numericArgs+ (!maxE,!minE) = runEval ((parTuple2 rpar rpar) ((\k -> if k == 0.0 then 1.0 else k) . (\rs -> if null rs then 0.0 else head rs) . firstFrom3 .+ maximumElBy 1 (VB.singleton (oneProperty)) $ UL2 (VB.empty,uniquenessVariants2GNB ' ' id id id perms (VB.singleton (oneProperty)) (chooseMax choice) $ subs), (\k -> if k == 0.0 then 1.0 else k) . abs . (\rs -> if null rs then 0.0 else head rs) .+ firstFrom3 . maximumElBy 1 (VB.singleton (oneProperty)) $ UL2 (VB.empty,uniquenessVariants2GNB ' ' id id id perms (VB.singleton (oneProperty))+ (chooseMin choice) $ subs)))+ printUniquenessG1VChar (I1 H) . fst . get22 . uniqNProperties2GN ' ' (VB.fromList " 01-") id id id perms K arg0 1 (VB.singleton (unsafeSwapVecIWithMaxI minE maxE numberI intervalNmbrs .+ oneProperty)) (chooseMax choice) $ v+
+ phonetic-languages-examples.cabal view
@@ -0,0 +1,52 @@+-- Initial phonetic-languages-examples.cabal generated by cabal init. For+-- further documentation, see http://haskell.org/cabal/users-guide/++name: phonetic-languages-examples+version: 0.1.0.0+synopsis: A generalization of the uniqueness-periods-vector-examples functionality.+description: Is intended to use more functionality of the Data.Vector, Data.Foldable, Data.Monoid and Data.SubG modules.+homepage: https://hackage.haskell.org/package/phonetic-languages-examples+license: MIT+license-file: LICENSE+author: OleksandrZhabenko+maintainer: olexandr543@yahoo.com+copyright: (c) 2020 Oleksandr Zhabenko+category: Language, Math, Game+build-type: Simple+extra-source-files: CHANGELOG.md+cabal-version: >=1.10++library+ exposed-modules: Languages.UniquenessPeriods.Vector.FuncRepRelatedG+ -- other-modules:+ other-extensions: BangPatterns+ build-depends: base >=4.7 && <4.15, phonetic-languages-vector >=0.1 && <1, phonetic-languages-common >=0.1.1 && <1, phonetic-languages-properties >=0.1 && <1, vector >=0.11 && < 0.14+ -- hs-source-dirs:+ default-language: Haskell2010++executable lineVariantsG+ main-is: Main.hs+ other-modules: Languages.UniquenessPeriods.Vector.FuncRepRelatedG+ other-extensions: BangPatterns+ build-depends: base >=4.7 && <4.15, ukrainian-phonetics-basic >=0.1.7 && <1, vector >=0.11 && <0.14, phonetic-languages-vector >=0.1 && <1, phonetic-languages-general >=0.1 && < 1, phonetic-languages-common >=0.1.1 && <1, phonetic-languages-properties >=0.1 && <1, print-info >=0.1.3 && <1, phonetic-languages-ukrainian >=0.2.3 && <1, parallel >=3.2.0.6 && <4, uniqueness-periods-vector-filters >=0.3 && <1, vector >=0.11 && <0.14, phonetic-languages-plus >=0.1 && <1, subG >=0.1.1.1 && < 1+ ghc-options: -threaded -rtsopts+ hs-source-dirs: ., Simple+ default-language: Haskell2010++executable rewritePoemG+ main-is: Main.hs+ other-modules: Languages.UniquenessPeriods.Vector.FuncRepRelatedG+ other-extensions: BangPatterns+ build-depends: base >=4.7 && <4.15, ukrainian-phonetics-basic >=0.1.7 && <1, vector >=0.11 && <0.14, phonetic-languages-vector >=0.1 && <1, phonetic-languages-general >=0.1 && < 1, phonetic-languages-common >=0.1.1 && <1, phonetic-languages-properties >=0.1 && <1, print-info >=0.1.3 && <1, phonetic-languages-ukrainian >=0.2.3 && <1, parallel >=3.2.0.6 && <4, uniqueness-periods-vector-filters >=0.3 && <1, vector >=0.11 && <0.14, phonetic-languages-plus >=0.1 && <1, subG >= 0.1.1.1 && < 1+ ghc-options: -threaded -rtsopts+ hs-source-dirs: ., Lines+ default-language: Haskell2010++executable propertiesTextG+ main-is: Main.hs+ other-modules: Languages.UniquenessPeriods.Vector.FuncRepRelatedG+ other-extensions: BangPatterns+ build-depends: base >=4.7 && <4.15, ukrainian-phonetics-basic >=0.1.7 && <1, vector >=0.11 && <0.14, phonetic-languages-vector >=0.1 && <1, phonetic-languages-general >=0.1 && < 1, phonetic-languages-common >=0.1.1 && <1, phonetic-languages-properties >=0.1 && <1, phonetic-languages-ukrainian >=0.2.3 && <1, uniqueness-periods-vector-filters >=0.3 && <1, uniqueness-periods-vector-stats >=0.1.2 && <1, parallel >=3.2.0.6 && <4, phonetic-languages-plus >=0.1 && <1, subG >= 0.1.1.1 && < 1+ ghc-options: -threaded -rtsopts+ hs-source-dirs: ., GetInfo+ default-language: Haskell2010