uniqueness-periods-vector-examples 0.5.3.0 → 0.6.0.0
raw patch · 4 files changed
+46/−26 lines, 4 filesdep +paralleldep ~mmsyn6ukrdep ~phonetic-languages-ukrainian
Dependencies added: parallel
Dependency ranges changed: mmsyn6ukr, phonetic-languages-ukrainian
Files
- ChangeLog.md +3/−0
- Proportion/Main.hs +20/−22
- README.md +18/−0
- uniqueness-periods-vector-examples.cabal +5/−4
ChangeLog.md view
@@ -53,3 +53,6 @@ * Fifth version revised C. Fixed issue with parsing empty second command line argument (or its absense, actually). +## 0.6.0.0 -- 2020-09-25++* Sixth version. Changed dependency boundaries. Added parallel as a new dependency. Switched to parallel version of the uniqVec03 program. Added ghc-options section to the uniqVec03 executable.
Proportion/Main.hs view
@@ -15,8 +15,12 @@ -- > -- -- -- -- > / \_/ \_/ \ -- +-- To enable parallel computational speed ups, please, run the @uniqVec03@ executable with+-- @+RTS -threaded -RTS@ command line options. -- +{-# OPTIONS_GHC -threaded -rtsopts #-}+ {-# LANGUAGE CPP, BangPatterns #-} module Main where@@ -27,7 +31,8 @@ import GHC.Base (mconcat) #endif #endif-import Data.Maybe (isNothing,fromJust)+import Control.Parallel.Strategies+import Data.Maybe (fromMaybe) import Text.Read (readMaybe) import qualified Data.Vector as V import String.Languages.UniquenessPeriods.Vector@@ -56,45 +61,38 @@ main = do args <- getArgs let file = concat . take 1 $ args- gzm = readMaybe (concat . take 1 . drop 1 $ args)::(Maybe Int)- gz = if isNothing gzm then 9 else fromJust gzm+ gz = fromMaybe 9 (readMaybe (concat . take 1 . drop 1 $ args)::(Maybe Int)) contents <- readFile file let flines = filter (not . null . filter isUkrainian) . prepareText $ contents data3 <- mapM (\ts -> do- let maxE = (\k -> if k == 0 then 1 else k) . (\rs -> if null rs then 0 else head rs) . firstFrom3 . maximumElBy 1 (V.singleton (oneProperty)) $ UL2 ([],uniquenessVariants2GN " 01-" (V.singleton (oneProperty)) (uniquenessPeriodsVector3 " 01-" . - aux0 . convertToProperUkrainian) (justOneValue2Property . diverse2) $ ts)- minE = (\k -> if k == 0 then 1 else k) . abs . (\rs -> if null rs then 0 else head rs) . firstFrom3 . maximumElBy 1 (V.singleton (oneProperty)) $ UL2 ([],uniquenessVariants2GN " 01-" (V.singleton (oneProperty)) (uniquenessPeriodsVector3 " 01-" . - aux0 . convertToProperUkrainian) (justOneValue2Property . negate . diverse2) $ ts)- data2 = (\k -> if k == 0 then 1 else k) . diverse2 . uniquenessPeriodsVector3 " 01-" . aux0 . convertToProperUkrainian $ ts - let ratio = if maxE == 1 then 0 else 2.0 * fromIntegral data2 / fromIntegral (minE + maxE)- intervalN = if maxE == 1 then 0 else intervalNRealFrac (int2Float minE) (int2Float maxE) gz (int2Float data2)- wordsN = if maxE == 1 then 0 else length . words $ ts+ let (maxE,minE,data2) = runEval ((parTuple3 rpar rseq rseq) ((\k -> if k == 0 then 1 else k) . (\rs -> if null rs then 0 else head rs) . firstFrom3 . maximumElBy 1 (V.singleton (oneProperty)) $ UL2 ([],uniquenessVariants2GN " 01-" (V.singleton (oneProperty)) (uniquenessPeriodsVector3 " 01-" . + aux0 . convertToProperUkrainian) (justOneValue2Property . diverse2) $ ts),+ (\k -> if k == 0 then 1 else k) . abs . (\rs -> if null rs then 0 else head rs) . firstFrom3 . maximumElBy 1 (V.singleton (oneProperty)) $ UL2 ([],uniquenessVariants2GN " 01-" (V.singleton (oneProperty)) (uniquenessPeriodsVector3 " 01-" . + aux0 . convertToProperUkrainian) (justOneValue2Property . negate . diverse2) $ ts),+ (\k -> if k == 0 then 1 else k) . diverse2 . uniquenessPeriodsVector3 " 01-" . aux0 . convertToProperUkrainian $ ts))+ ratio = if maxE == 1 then 0.0 else 2.0 * fromIntegral data2 / fromIntegral (minE + maxE)+ [intervalN,wordsN] = runEval ((parList rpar) [if maxE == 1 then 0 else intervalNRealFrac (int2Float minE) (int2Float maxE) gz (int2Float data2),+ if maxE == 1 then 0 else length . words $ ts]) putStrLn $ mconcat [show (minE::Int), "\t", show (data2::Int), "\t", show (maxE::Int), "\t", showFFloat (Just 4) (fromIntegral data2 / fromIntegral minE) "\t", showFFloat (Just 4) (fromIntegral maxE / fromIntegral data2) "\t", - showFFloat (Just 4) ratio "\t", show wordsN, "\t", show intervalN]+ showFFloat (Just 4) ratio "\t", show (wordsN::Int), "\t", show (intervalN::Int)] return (ratio,(wordsN,intervalN))) $ flines let (data31,wordsCnt0_data32) = unzip data3 data4 = filter (/= 0) data31 if null data4 then putStrLn (replicate 102 '-') >> putStrLn "1.000+-0.000\tALL!" >> putStrLn (replicate 102 '=') -- Well, this means that all the text consists of the unique (in phonetic meaning) words alongside every line. A rather rare occurrence. else do - let (mean1,disp) = meanWithDisp data4+ let (!mean1,!disp) = meanWithDisp data4 pairs = sort . filter ((/= 0) . snd) $ wordsCnt0_data32- f xs n = show . length . takeWhile (== n) . dropWhile (/= n) $ xs- g m n = length . takeWhile (\(_,v) -> v == n) . dropWhile (\(_,v) -> v /= n) . takeWhile (\(u,_) -> u == m) . dropWhile (\(u,_) -> u /= m) $ pairs+ g m n = (length . takeWhile (\(_,v) -> v == n) . dropWhile (\(_,v) -> v /= n) . takeWhile (\(u,_) -> u == m) . dropWhile (\(u,_) -> u /= m) $ pairs) `using` rdeepseq putStrLn (replicate 102 '-') mapM_ (\r -> putStr $ show r ++ "\t") [1..gz] >> putStrLn ""- mapM_ (\r -> putStr $ f (sort . map snd $ pairs) r ++ "\t") [1..gz] >> putStrLn ""+ mapM_ (\r -> putStr $ (show . length . takeWhile (== r) . dropWhile (/= r) . sort . map snd $ pairs) ++ "\t") [1..gz] >> putStrLn "" putStrLn $ showFFloat (Just 4) mean1 "+-" ++ showFFloat (Just 4) (sqrt disp) "\t" ++ show (length . filter (== 0) $ data31) ++ "\t" ++ show (length data3) mapM_ (\r -> putStr $ show r ++ "\t") [2..8] >> putStrLn ""- mapM_ (\r -> putStr $ f (map fst $ pairs) r ++ "\t") [2..8] >> putStrLn ""+ mapM_ (\r -> putStr $ (show . length . takeWhile (== r) . dropWhile (/= r) . map fst $ pairs) ++ "\t") [2..8] >> putStrLn "" putStrLn (replicate 102 '*') mapM_ (\m1 -> mapM_ (\n1 -> putStr $ (if g m1 n1 == 0 then "." else show (g m1 n1)) ++ "\t") [1..gz] >> putStrLn "") [2..8] putStrLn (replicate 102 '~') mapM_ (\m1 -> mapM_ (\n1 -> putStr $ show (g m1 n1) ++ "\t") [1..gz] >> putStrLn "") [2..8] putStrLn (replicate 102 '=') -isUkrainian :: Char -> Bool-isUkrainian x- | x == '\x0404' || (x >= '\x0406' && x <= '\x0407') || (x >= '\x0410' && x <= '\x0429') || x == '\x042C' || (x >= '\x042E' && x <= '\x0449') || x == '\x044C' || (x >= '\x044E' && x <= '\x044F') || x == '\x0454' || (x >= '\x0456' && x <= '\x0457') = True- | otherwise = False-
README.md view
@@ -39,3 +39,21 @@ and from GitHub page: https://github.com/OleksandrZhabenko/uniqueness-periods-vector-examples/blob/master/0.4.0.0.zip++-------------++* For the uniqueness-periods-vector-examples of 0.5.3.0 version:++http://web.archive.org/web/20200922081933/https://raw.githubusercontent.com/OleksandrZhabenko/uniqueness-periods-vector-examples/master/0.5.3.0.zip++and from GitHub page:++https://github.com/OleksandrZhabenko/uniqueness-periods-vector-examples/blob/master/0.5.3.0.zip++------------------++To enable parallel computational speed ups for uniqVec03 executable, please run it with+++RTS -threaded -RTS++command line options.
uniqueness-periods-vector-examples.cabal view
@@ -3,7 +3,7 @@ -- http://haskell.org/cabal/users-guide/ name: uniqueness-periods-vector-examples-version: 0.5.3.0+version: 0.6.0.0 synopsis: Examples of usage for the uniqueness-periods-vector series of packages description: Examples of usage for the uniqueness-periods-vector series of packages. Several executables are planned to demonstrate the libraries work. homepage: https://hackage.haskell.org/package/uniqueness-periods-vector-examples@@ -21,7 +21,7 @@ main-is: Main.hs -- other-modules: -- other-extensions:- build-depends: base >=4.7 && <4.15, mmsyn6ukr >=0.8 && <1, vector >=0.11 && <0.14, uniqueness-periods-vector >=0.3 && <1, uniqueness-periods-vector-general >=0.4.2 && < 1, uniqueness-periods-vector-common >=0.3 && <1, uniqueness-periods-vector-properties >=0.3.1 && <1, print-info >=0.1.3 && <1, phonetic-languages-ukrainian >=0.2 && <1+ build-depends: base >=4.7 && <4.15, mmsyn6ukr >=0.8.1 && <1, vector >=0.11 && <0.14, uniqueness-periods-vector >=0.3 && <1, uniqueness-periods-vector-general >=0.4.2 && < 1, uniqueness-periods-vector-common >=0.3 && <1, uniqueness-periods-vector-properties >=0.3.1 && <1, print-info >=0.1.3 && <1, phonetic-languages-ukrainian >=0.2.1 && <1 hs-source-dirs: Simple default-language: Haskell2010 @@ -29,7 +29,7 @@ main-is: Main.hs -- other-modules: -- other-extensions:- build-depends: base >=4.7 && <4.15, mmsyn6ukr >=0.8 && <1, vector >=0.11 && <0.14, uniqueness-periods-vector >=0.3 && <1, uniqueness-periods-vector-general >=0.4.2 && < 1, uniqueness-periods-vector-common >=0.3 && <1, uniqueness-periods-vector-properties >=0.3.1 && <1, print-info >=0.1.3 && <1, phonetic-languages-ukrainian >=0.2 && <1+ build-depends: base >=4.7 && <4.15, mmsyn6ukr >=0.8.1 && <1, vector >=0.11 && <0.14, uniqueness-periods-vector >=0.3 && <1, uniqueness-periods-vector-general >=0.4.2 && < 1, uniqueness-periods-vector-common >=0.3 && <1, uniqueness-periods-vector-properties >=0.3.1 && <1, print-info >=0.1.3 && <1, phonetic-languages-ukrainian >=0.2.1 && <1 hs-source-dirs: Lines default-language: Haskell2010 @@ -37,6 +37,7 @@ main-is: Main.hs -- other-modules: other-extensions: CPP, BangPatterns- build-depends: base >=4.7 && <4.15, mmsyn6ukr >=0.8 && <1, vector >=0.11 && <0.14, uniqueness-periods-vector >=0.3 && <1, uniqueness-periods-vector-general >=0.4.2 && < 1, uniqueness-periods-vector-common >=0.3 && <1, uniqueness-periods-vector-properties >=0.3.1 && <1, print-info >=0.1.3 && <1, phonetic-languages-ukrainian >=0.2 && <1, uniqueness-periods-vector-filters >=0.2 && <1, uniqueness-periods-vector-stats >=0.1.2 && <1+ build-depends: base >=4.7 && <4.15, mmsyn6ukr >=0.8.1 && <1, vector >=0.11 && <0.14, uniqueness-periods-vector >=0.3 && <1, uniqueness-periods-vector-general >=0.4.2 && < 1, uniqueness-periods-vector-common >=0.3 && <1, uniqueness-periods-vector-properties >=0.3.1 && <1, print-info >=0.1.3 && <1, phonetic-languages-ukrainian >=0.2.1 && <1, uniqueness-periods-vector-filters >=0.2 && <1, uniqueness-periods-vector-stats >=0.1.2 && <1, parallel >=3.2.0.6 && <4+ ghc-options: -threaded -rtsopts hs-source-dirs: Proportion default-language: Haskell2010