-- |
-- Module      :  Languages.UniquenessPeriods.Vector.PropertiesFuncRep
-- Copyright   :  (c) OleksandrZhabenko 2020
-- License     :  MIT
-- Stability   :  Experimental
-- Maintainer  :  olexandr543@yahoo.com
--
-- Generalization of the functionality of the DobutokO.Poetry.Norms
-- and DobutokO.Poetry.Norms.Extended modules
-- from the @dobutokO-poetry@ package.

{-# LANGUAGE CPP, BangPatterns #-}

module Languages.UniquenessPeriods.Vector.PropertiesFuncRep (
  -- * Functions with 'Int'
  procDiverse2I
  , procDiverse2Ineg
  -- * Functions with 'Float'
  , procDiverse2F
  , procDiverse2Fneg
  , procRhythmicity23F
  , procRhythmicity23Fneg
  , procBothF
  , procBothFneg
  , procBothInvF
  , procBothInvFneg
) where

#ifdef __GLASGOW_HASKELL__
#if __GLASGOW_HASKELL__>=710
/* code that applies only to GHC 7.10.* and higher versions */
import GHC.Base (mconcat)
#endif
#endif
import qualified Data.Vector as V
import String.Languages.UniquenessPeriods.Vector
import Languages.UniquenessPeriods.Vector.PropertiesSyllables
import Languages.UniquenessPeriods.Vector.Properties
import Languages.Rhythmicity
import Languages.UniquenessPeriods.Vector.Data
import Languages.Phonetic.Ukrainian.PrepareText
import GHC.Float (int2Float)
import Melodics.Ukrainian (convertToProperUkrainian)
import MMSyn7.Syllable

#ifdef __GLASGOW_HASKELL__
#if __GLASGOW_HASKELL__==708
/* code that applies only to GHC 7.8.* */
mconcat = concat
#endif
#endif

procDiverse2I :: FuncRep String (UniquenessGeneral2 Char) [Int]
procDiverse2I :: FuncRep String (UniquenessGeneral2 Char) [Int]
procDiverse2I = (String -> UniquenessGeneral2 Char)
-> (UniquenessGeneral2 Char -> [Int])
-> FuncRep String (UniquenessGeneral2 Char) [Int]
forall a b c. (a -> b) -> (b -> c) -> FuncRep a b c
D2 (String -> Vector Char -> UniquenessGeneral2 Char
forall a. Eq a => [a] -> Vector a -> UniquenessGeneral2 a
uniquenessPeriodsVector3 String
" 01-" (Vector Char -> UniquenessGeneral2 Char)
-> (String -> Vector Char) -> String -> UniquenessGeneral2 Char
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Vector String -> Vector Char
aux0 (Vector String -> Vector Char)
-> (String -> Vector String) -> String -> Vector Char
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> Vector String
convertToProperUkrainian) (Int -> [Int]
forall b. Ord b => b -> [b]
justOneValue2Property (Int -> [Int])
-> (UniquenessGeneral2 Char -> Int)
-> UniquenessGeneral2 Char
-> [Int]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. UniquenessGeneral2 Char -> Int
forall a. Eq a => UniquenessGeneral2 a -> Int
diverse2)
{-# INLINE procDiverse2I #-}

-- | Can be used to find out the minimum element.
procDiverse2Ineg :: FuncRep String (UniquenessGeneral2 Char) [Int]
procDiverse2Ineg :: FuncRep String (UniquenessGeneral2 Char) [Int]
procDiverse2Ineg = (String -> UniquenessGeneral2 Char)
-> (UniquenessGeneral2 Char -> [Int])
-> FuncRep String (UniquenessGeneral2 Char) [Int]
forall a b c. (a -> b) -> (b -> c) -> FuncRep a b c
D2 (String -> Vector Char -> UniquenessGeneral2 Char
forall a. Eq a => [a] -> Vector a -> UniquenessGeneral2 a
uniquenessPeriodsVector3 String
" 01-" (Vector Char -> UniquenessGeneral2 Char)
-> (String -> Vector Char) -> String -> UniquenessGeneral2 Char
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Vector String -> Vector Char
aux0 (Vector String -> Vector Char)
-> (String -> Vector String) -> String -> Vector Char
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> Vector String
convertToProperUkrainian) (Int -> [Int]
forall b. Ord b => b -> [b]
justOneValue2Property (Int -> [Int])
-> (UniquenessGeneral2 Char -> Int)
-> UniquenessGeneral2 Char
-> [Int]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Int -> Int
forall a. Num a => a -> a
negate (Int -> Int)
-> (UniquenessGeneral2 Char -> Int)
-> UniquenessGeneral2 Char
-> Int
forall b c a. (b -> c) -> (a -> b) -> a -> c
. UniquenessGeneral2 Char -> Int
forall a. Eq a => UniquenessGeneral2 a -> Int
diverse2)
{-# INLINE procDiverse2Ineg #-}

procDiverse2F :: FuncRep String (UniquenessGeneral2 Char) [Float]
procDiverse2F :: FuncRep String (UniquenessGeneral2 Char) [Float]
procDiverse2F = (String -> UniquenessGeneral2 Char)
-> (UniquenessGeneral2 Char -> [Float])
-> FuncRep String (UniquenessGeneral2 Char) [Float]
forall a b c. (a -> b) -> (b -> c) -> FuncRep a b c
D2 (String -> Vector Char -> UniquenessGeneral2 Char
forall a. Eq a => [a] -> Vector a -> UniquenessGeneral2 a
uniquenessPeriodsVector3 String
" 01-" (Vector Char -> UniquenessGeneral2 Char)
-> (String -> Vector Char) -> String -> UniquenessGeneral2 Char
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Vector String -> Vector Char
aux0 (Vector String -> Vector Char)
-> (String -> Vector String) -> String -> Vector Char
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> Vector String
convertToProperUkrainian) (Float -> [Float]
forall b. Ord b => b -> [b]
justOneValue2Property (Float -> [Float])
-> (UniquenessGeneral2 Char -> Float)
-> UniquenessGeneral2 Char
-> [Float]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Int -> Float
int2Float (Int -> Float)
-> (UniquenessGeneral2 Char -> Int)
-> UniquenessGeneral2 Char
-> Float
forall b c a. (b -> c) -> (a -> b) -> a -> c
. UniquenessGeneral2 Char -> Int
forall a. Eq a => UniquenessGeneral2 a -> Int
diverse2)
{-# INLINE procDiverse2F #-}

procDiverse2Fneg :: FuncRep String (UniquenessGeneral2 Char) [Float]
procDiverse2Fneg :: FuncRep String (UniquenessGeneral2 Char) [Float]
procDiverse2Fneg = (String -> UniquenessGeneral2 Char)
-> (UniquenessGeneral2 Char -> [Float])
-> FuncRep String (UniquenessGeneral2 Char) [Float]
forall a b c. (a -> b) -> (b -> c) -> FuncRep a b c
D2 (String -> Vector Char -> UniquenessGeneral2 Char
forall a. Eq a => [a] -> Vector a -> UniquenessGeneral2 a
uniquenessPeriodsVector3 String
" 01-" (Vector Char -> UniquenessGeneral2 Char)
-> (String -> Vector Char) -> String -> UniquenessGeneral2 Char
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Vector String -> Vector Char
aux0 (Vector String -> Vector Char)
-> (String -> Vector String) -> String -> Vector Char
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> Vector String
convertToProperUkrainian) (Float -> [Float]
forall b. Ord b => b -> [b]
justOneValue2Property (Float -> [Float])
-> (UniquenessGeneral2 Char -> Float)
-> UniquenessGeneral2 Char
-> [Float]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Int -> Float
int2Float (Int -> Float)
-> (UniquenessGeneral2 Char -> Int)
-> UniquenessGeneral2 Char
-> Float
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Int -> Int
forall a. Num a => a -> a
negate (Int -> Int)
-> (UniquenessGeneral2 Char -> Int)
-> UniquenessGeneral2 Char
-> Int
forall b c a. (b -> c) -> (a -> b) -> a -> c
. UniquenessGeneral2 Char -> Int
forall a. Eq a => UniquenessGeneral2 a -> Int
diverse2)
{-# INLINE procDiverse2Fneg #-}

procRhythmicity23F :: FuncRep String (UniquenessGeneral2 Char) [Float]
procRhythmicity23F :: FuncRep String (UniquenessGeneral2 Char) [Float]
procRhythmicity23F = (String -> [Float])
-> FuncRep String (UniquenessGeneral2 Char) [Float]
forall a b c. (a -> c) -> FuncRep a b c
U1 (Float -> [Float]
forall b. Ord b => b -> [b]
justOneValue2Property (Float -> [Float]) -> (String -> Float) -> String -> [Float]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> Float
rhythmicity0)
{-# INLINE procRhythmicity23F #-}

-- | Can be used to find out the minimum element.
procRhythmicity23Fneg :: FuncRep String (UniquenessGeneral2 Char) [Float]
procRhythmicity23Fneg :: FuncRep String (UniquenessGeneral2 Char) [Float]
procRhythmicity23Fneg = (String -> [Float])
-> FuncRep String (UniquenessGeneral2 Char) [Float]
forall a b c. (a -> c) -> FuncRep a b c
U1 (Float -> [Float]
forall b. Ord b => b -> [b]
justOneValue2Property (Float -> [Float]) -> (String -> Float) -> String -> [Float]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Float -> Float
forall a. Num a => a -> a
negate (Float -> Float) -> (String -> Float) -> String -> Float
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> Float
rhythmicity0)
{-# INLINE procRhythmicity23Fneg #-}

procBothF :: FuncRep String (UniquenessGeneral2 Char) [Float]
procBothF :: FuncRep String (UniquenessGeneral2 Char) [Float]
procBothF = (String -> [Float])
-> FuncRep String (UniquenessGeneral2 Char) [Float]
forall a b c. (a -> c) -> FuncRep a b c
U1 (\String
xs -> let ys :: Vector String
ys = String -> Vector String
convertToProperUkrainian String
xs in [(Int -> Float
int2Float (Int -> Float) -> (Vector String -> Int) -> Vector String -> Float
forall b c a. (b -> c) -> (a -> b) -> a -> c
. UniquenessGeneral2 Char -> Int
forall a. Eq a => UniquenessGeneral2 a -> Int
diverse2 (UniquenessGeneral2 Char -> Int)
-> (Vector String -> UniquenessGeneral2 Char)
-> Vector String
-> Int
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> Vector Char -> UniquenessGeneral2 Char
forall a. Eq a => [a] -> Vector a -> UniquenessGeneral2 a
uniquenessPeriodsVector3 String
" 01-" (Vector Char -> UniquenessGeneral2 Char)
-> (Vector String -> Vector Char)
-> Vector String
-> UniquenessGeneral2 Char
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Vector String -> Vector Char
aux0  (Vector String -> Float) -> Vector String -> Float
forall a b. (a -> b) -> a -> b
$ Vector String
ys)Float -> Float -> Float
forall a. Num a => a -> a -> a
*([Float] -> Float
forall a. (RealFrac a, Floating a) => [a] -> a
evalRhythmicity23 ([Float] -> Float)
-> (Vector String -> [Float]) -> Vector String -> Float
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [[Float]] -> [Float]
forall a. Monoid a => [a] -> a
mconcat ([[Float]] -> [Float])
-> (Vector String -> [[Float]]) -> Vector String -> [Float]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [[[UZP]]] -> [[Float]]
syllableDurations ([[[UZP]]] -> [[Float]])
-> (Vector String -> [[[UZP]]]) -> Vector String -> [[Float]]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Vector String -> [[UZP]]) -> [Vector String] -> [[[UZP]]]
forall a b. (a -> b) -> [a] -> [b]
map ( [[UZP]] -> [[UZP]]
createSyllablesP ([[UZP]] -> [[UZP]])
-> (Vector String -> [[UZP]]) -> Vector String -> [[UZP]]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Vector String -> [[UZP]]
additionalF) ([Vector String] -> [[[UZP]]])
-> (Vector String -> [Vector String]) -> Vector String -> [[[UZP]]]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Vector String -> [Vector String]
vecWords (Vector String -> Float) -> Vector String -> Float
forall a b. (a -> b) -> a -> b
$ Vector String
ys)])
{-# INLINE procBothF #-}

-- | Can be used to find out the minimum element.
procBothFneg :: FuncRep String (UniquenessGeneral2 Char) [Float]
procBothFneg :: FuncRep String (UniquenessGeneral2 Char) [Float]
procBothFneg = (String -> [Float])
-> FuncRep String (UniquenessGeneral2 Char) [Float]
forall a b c. (a -> c) -> FuncRep a b c
U1 (\String
xs -> let ys :: Vector String
ys = String -> Vector String
convertToProperUkrainian String
xs in [(Int -> Float
int2Float (Int -> Float) -> (Vector String -> Int) -> Vector String -> Float
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Int -> Int
forall a. Num a => a -> a
negate (Int -> Int) -> (Vector String -> Int) -> Vector String -> Int
forall b c a. (b -> c) -> (a -> b) -> a -> c
. UniquenessGeneral2 Char -> Int
forall a. Eq a => UniquenessGeneral2 a -> Int
diverse2 (UniquenessGeneral2 Char -> Int)
-> (Vector String -> UniquenessGeneral2 Char)
-> Vector String
-> Int
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> Vector Char -> UniquenessGeneral2 Char
forall a. Eq a => [a] -> Vector a -> UniquenessGeneral2 a
uniquenessPeriodsVector3 String
" 01-" (Vector Char -> UniquenessGeneral2 Char)
-> (Vector String -> Vector Char)
-> Vector String
-> UniquenessGeneral2 Char
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Vector String -> Vector Char
aux0  (Vector String -> Float) -> Vector String -> Float
forall a b. (a -> b) -> a -> b
$ Vector String
ys)Float -> Float -> Float
forall a. Num a => a -> a -> a
*([Float] -> Float
forall a. (RealFrac a, Floating a) => [a] -> a
evalRhythmicity23 ([Float] -> Float)
-> (Vector String -> [Float]) -> Vector String -> Float
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [[Float]] -> [Float]
forall a. Monoid a => [a] -> a
mconcat ([[Float]] -> [Float])
-> (Vector String -> [[Float]]) -> Vector String -> [Float]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [[[UZP]]] -> [[Float]]
syllableDurations ([[[UZP]]] -> [[Float]])
-> (Vector String -> [[[UZP]]]) -> Vector String -> [[Float]]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Vector String -> [[UZP]]) -> [Vector String] -> [[[UZP]]]
forall a b. (a -> b) -> [a] -> [b]
map ( [[UZP]] -> [[UZP]]
createSyllablesP ([[UZP]] -> [[UZP]])
-> (Vector String -> [[UZP]]) -> Vector String -> [[UZP]]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Vector String -> [[UZP]]
additionalF) ([Vector String] -> [[[UZP]]])
-> (Vector String -> [Vector String]) -> Vector String -> [[[UZP]]]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Vector String -> [Vector String]
vecWords (Vector String -> Float) -> Vector String -> Float
forall a b. (a -> b) -> a -> b
$ Vector String
ys)])
{-# INLINE procBothFneg #-}

procBothInvF :: FuncRep String (UniquenessGeneral2 Char) [Float]
procBothInvF :: FuncRep String (UniquenessGeneral2 Char) [Float]
procBothInvF = (String -> [Float])
-> FuncRep String (UniquenessGeneral2 Char) [Float]
forall a b c. (a -> c) -> FuncRep a b c
U1 (\String
xs ->
  let !ys :: Vector String
ys = String -> Vector String
convertToProperUkrainian String
xs
      !zs :: UniquenessGeneral2 Char
zs = String -> Vector Char -> UniquenessGeneral2 Char
forall a. Eq a => [a] -> Vector a -> UniquenessGeneral2 a
uniquenessPeriodsVector3 String
" 01-" (Vector Char -> UniquenessGeneral2 Char)
-> (Vector String -> Vector Char)
-> Vector String
-> UniquenessGeneral2 Char
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Vector String -> Vector Char
aux0  (Vector String -> UniquenessGeneral2 Char)
-> Vector String -> UniquenessGeneral2 Char
forall a b. (a -> b) -> a -> b
$ Vector String
ys in if UniquenessGeneral2 Char -> Bool
forall a. Vector a -> Bool
V.null UniquenessGeneral2 Char
zs then [([Float] -> Float
forall a. (RealFrac a, Floating a) => [a] -> a
evalRhythmicity23 ([Float] -> Float)
-> (Vector String -> [Float]) -> Vector String -> Float
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [[Float]] -> [Float]
forall a. Monoid a => [a] -> a
mconcat ([[Float]] -> [Float])
-> (Vector String -> [[Float]]) -> Vector String -> [Float]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [[[UZP]]] -> [[Float]]
syllableDurations ([[[UZP]]] -> [[Float]])
-> (Vector String -> [[[UZP]]]) -> Vector String -> [[Float]]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Vector String -> [[UZP]]) -> [Vector String] -> [[[UZP]]]
forall a b. (a -> b) -> [a] -> [b]
map ( [[UZP]] -> [[UZP]]
createSyllablesP ([[UZP]] -> [[UZP]])
-> (Vector String -> [[UZP]]) -> Vector String -> [[UZP]]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Vector String -> [[UZP]]
additionalF) ([Vector String] -> [[[UZP]]])
-> (Vector String -> [Vector String]) -> Vector String -> [[[UZP]]]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Vector String -> [Vector String]
vecWords (Vector String -> Float) -> Vector String -> Float
forall a b. (a -> b) -> a -> b
$ Vector String
ys) Float -> Float -> Float
forall a. Num a => a -> a -> a
* ([Float] -> Float
forall a. (RealFrac a, Floating a) => [a] -> a
evalRhythmicity23 ([Float] -> Float)
-> (Vector String -> [Float]) -> Vector String -> Float
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [[Float]] -> [Float]
forall a. Monoid a => [a] -> a
mconcat ([[Float]] -> [Float])
-> (Vector String -> [[Float]]) -> Vector String -> [Float]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [[[UZP]]] -> [[Float]]
syllableDurations ([[[UZP]]] -> [[Float]])
-> (Vector String -> [[[UZP]]]) -> Vector String -> [[Float]]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Vector String -> [[UZP]]) -> [Vector String] -> [[[UZP]]]
forall a b. (a -> b) -> [a] -> [b]
map ( [[UZP]] -> [[UZP]]
createSyllablesP ([[UZP]] -> [[UZP]])
-> (Vector String -> [[UZP]]) -> Vector String -> [[UZP]]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Vector String -> [[UZP]]
additionalF) ([Vector String] -> [[[UZP]]])
-> (Vector String -> [Vector String]) -> Vector String -> [[[UZP]]]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Vector String -> [Vector String]
vecWords (Vector String -> Float) -> Vector String -> Float
forall a b. (a -> b) -> a -> b
$ Vector String
ys)] else [([Float] -> Float
forall a. (RealFrac a, Floating a) => [a] -> a
evalRhythmicity23 ([Float] -> Float)
-> (Vector String -> [Float]) -> Vector String -> Float
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [[Float]] -> [Float]
forall a. Monoid a => [a] -> a
mconcat ([[Float]] -> [Float])
-> (Vector String -> [[Float]]) -> Vector String -> [Float]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [[[UZP]]] -> [[Float]]
syllableDurations ([[[UZP]]] -> [[Float]])
-> (Vector String -> [[[UZP]]]) -> Vector String -> [[Float]]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Vector String -> [[UZP]]) -> [Vector String] -> [[[UZP]]]
forall a b. (a -> b) -> [a] -> [b]
map ( [[UZP]] -> [[UZP]]
createSyllablesP ([[UZP]] -> [[UZP]])
-> (Vector String -> [[UZP]]) -> Vector String -> [[UZP]]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Vector String -> [[UZP]]
additionalF) ([Vector String] -> [[[UZP]]])
-> (Vector String -> [Vector String]) -> Vector String -> [[[UZP]]]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Vector String -> [Vector String]
vecWords (Vector String -> Float) -> Vector String -> Float
forall a b. (a -> b) -> a -> b
$ Vector String
ys) Float -> Float -> Float
forall a. Fractional a => a -> a -> a
/ (Int -> Float
int2Float (Int -> Float)
-> (UniquenessGeneral2 Char -> Int)
-> UniquenessGeneral2 Char
-> Float
forall b c a. (b -> c) -> (a -> b) -> a -> c
. UniquenessGeneral2 Char -> Int
forall a. Eq a => UniquenessGeneral2 a -> Int
diverse2 (UniquenessGeneral2 Char -> Float)
-> UniquenessGeneral2 Char -> Float
forall a b. (a -> b) -> a -> b
$ UniquenessGeneral2 Char
zs)])
{-# INLINE procBothInvF #-}

-- | Can be used to find out the minimum element.
procBothInvFneg :: FuncRep String (UniquenessGeneral2 Char) [Float]
procBothInvFneg :: FuncRep String (UniquenessGeneral2 Char) [Float]
procBothInvFneg = (String -> [Float])
-> FuncRep String (UniquenessGeneral2 Char) [Float]
forall a b c. (a -> c) -> FuncRep a b c
U1 (\String
xs ->
  let !ys :: Vector String
ys = String -> Vector String
convertToProperUkrainian String
xs
      !zs :: UniquenessGeneral2 Char
zs = String -> Vector Char -> UniquenessGeneral2 Char
forall a. Eq a => [a] -> Vector a -> UniquenessGeneral2 a
uniquenessPeriodsVector3 String
" 01-" (Vector Char -> UniquenessGeneral2 Char)
-> (Vector String -> Vector Char)
-> Vector String
-> UniquenessGeneral2 Char
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Vector String -> Vector Char
aux0  (Vector String -> UniquenessGeneral2 Char)
-> Vector String -> UniquenessGeneral2 Char
forall a b. (a -> b) -> a -> b
$ Vector String
ys in if UniquenessGeneral2 Char -> Bool
forall a. Vector a -> Bool
V.null UniquenessGeneral2 Char
zs then [Float -> Float
forall a. Num a => a -> a
negate ([Float] -> Float
forall a. (RealFrac a, Floating a) => [a] -> a
evalRhythmicity23 ([Float] -> Float)
-> (Vector String -> [Float]) -> Vector String -> Float
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [[Float]] -> [Float]
forall a. Monoid a => [a] -> a
mconcat ([[Float]] -> [Float])
-> (Vector String -> [[Float]]) -> Vector String -> [Float]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [[[UZP]]] -> [[Float]]
syllableDurations ([[[UZP]]] -> [[Float]])
-> (Vector String -> [[[UZP]]]) -> Vector String -> [[Float]]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Vector String -> [[UZP]]) -> [Vector String] -> [[[UZP]]]
forall a b. (a -> b) -> [a] -> [b]
map ( [[UZP]] -> [[UZP]]
createSyllablesP ([[UZP]] -> [[UZP]])
-> (Vector String -> [[UZP]]) -> Vector String -> [[UZP]]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Vector String -> [[UZP]]
additionalF) ([Vector String] -> [[[UZP]]])
-> (Vector String -> [Vector String]) -> Vector String -> [[[UZP]]]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Vector String -> [Vector String]
vecWords (Vector String -> Float) -> Vector String -> Float
forall a b. (a -> b) -> a -> b
$ Vector String
ys) Float -> Float -> Float
forall a. Num a => a -> a -> a
* ([Float] -> Float
forall a. (RealFrac a, Floating a) => [a] -> a
evalRhythmicity23 ([Float] -> Float)
-> (Vector String -> [Float]) -> Vector String -> Float
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [[Float]] -> [Float]
forall a. Monoid a => [a] -> a
mconcat ([[Float]] -> [Float])
-> (Vector String -> [[Float]]) -> Vector String -> [Float]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [[[UZP]]] -> [[Float]]
syllableDurations ([[[UZP]]] -> [[Float]])
-> (Vector String -> [[[UZP]]]) -> Vector String -> [[Float]]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Vector String -> [[UZP]]) -> [Vector String] -> [[[UZP]]]
forall a b. (a -> b) -> [a] -> [b]
map ( [[UZP]] -> [[UZP]]
createSyllablesP ([[UZP]] -> [[UZP]])
-> (Vector String -> [[UZP]]) -> Vector String -> [[UZP]]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Vector String -> [[UZP]]
additionalF) ([Vector String] -> [[[UZP]]])
-> (Vector String -> [Vector String]) -> Vector String -> [[[UZP]]]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Vector String -> [Vector String]
vecWords (Vector String -> Float) -> Vector String -> Float
forall a b. (a -> b) -> a -> b
$ Vector String
ys)] else [([Float] -> Float
forall a. (RealFrac a, Floating a) => [a] -> a
evalRhythmicity23 ([Float] -> Float)
-> (Vector String -> [Float]) -> Vector String -> Float
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [[Float]] -> [Float]
forall a. Monoid a => [a] -> a
mconcat ([[Float]] -> [Float])
-> (Vector String -> [[Float]]) -> Vector String -> [Float]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [[[UZP]]] -> [[Float]]
syllableDurations ([[[UZP]]] -> [[Float]])
-> (Vector String -> [[[UZP]]]) -> Vector String -> [[Float]]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Vector String -> [[UZP]]) -> [Vector String] -> [[[UZP]]]
forall a b. (a -> b) -> [a] -> [b]
map ( [[UZP]] -> [[UZP]]
createSyllablesP ([[UZP]] -> [[UZP]])
-> (Vector String -> [[UZP]]) -> Vector String -> [[UZP]]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Vector String -> [[UZP]]
additionalF) ([Vector String] -> [[[UZP]]])
-> (Vector String -> [Vector String]) -> Vector String -> [[[UZP]]]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Vector String -> [Vector String]
vecWords (Vector String -> Float) -> Vector String -> Float
forall a b. (a -> b) -> a -> b
$ Vector String
ys) Float -> Float -> Float
forall a. Fractional a => a -> a -> a
/ (Int -> Float
int2Float (Int -> Float)
-> (UniquenessGeneral2 Char -> Int)
-> UniquenessGeneral2 Char
-> Float
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Int -> Int
forall a. Num a => a -> a
negate (Int -> Int)
-> (UniquenessGeneral2 Char -> Int)
-> UniquenessGeneral2 Char
-> Int
forall b c a. (b -> c) -> (a -> b) -> a -> c
. UniquenessGeneral2 Char -> Int
forall a. Eq a => UniquenessGeneral2 a -> Int
diverse2 (UniquenessGeneral2 Char -> Float)
-> UniquenessGeneral2 Char -> Float
forall a b. (a -> b) -> a -> b
$ UniquenessGeneral2 Char
zs)])
{-# INLINE procBothInvFneg #-}