packages feed

phonetic-languages-properties-0.2.0.0: Languages/UniquenessPeriods/Vector/PropertiesSyllablesG.hs

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

{-# LANGUAGE CPP #-}

module Languages.UniquenessPeriods.Vector.PropertiesSyllablesG (
  -- * Rhythmicity metrices (semi-empirical)
  -- ** Simple ones
  rhythmicity0
  , rhythmicityV0
  -- ** With weight coefficients
  , rhythmicityVK
  , rhythmicityK
  -- * Rhythmicity metrices from generated with r-glpk-phonetic-languages-ukrainian-durations package (since 0.2.0.0 version)
  -- ** Simple ones
  , rhythmicity02
  , rhythmicityV02
  -- ** With weight coefficients
  , rhythmicityVK2
  , rhythmicityK2
) 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 VB
import Languages.Rhythmicity
import Languages.Phonetic.Ukrainian.Syllable

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

eval23 = evalRhythmicity23 . mconcat
{-# INLINE eval23 #-}

eval23K k2 k3 = evalRhythmicity23K k2 k3 . mconcat
{-# INLINE eval23K #-}

rhythmicity0 :: String -> Float
rhythmicity0 xs
 | null xs = 0.0
 | otherwise = eval23 . syllableDurations . createSyllablesUkr $ xs

rhythmicityK :: Float -> Float -> String -> Float
rhythmicityK k2 k3 xs
 | null xs = 0.0
 | otherwise = eval23K k2 k3 . syllableDurations . createSyllablesUkrP $ xs

rhythmicityV0 :: VB.Vector Char -> Float
rhythmicityV0 v
 | VB.null v = 0.0
 | otherwise = eval23 . syllableDurations . createSyllablesUkrV $ v

rhythmicityVK :: Float -> Float -> VB.Vector Char -> Float
rhythmicityVK k2 k3 v
 | VB.null v = 0.0
 | otherwise = eval23K k2 k3 . syllableDurations . createSyllablesUkrVP $ v

-------------------------------------------------------

rhythmicity02 :: String -> Float
rhythmicity02 xs
 | null xs = 0.0
 | otherwise = eval23 . syllableDurations2 . createSyllablesUkr $ xs

rhythmicityK2 :: Float -> Float -> String -> Float
rhythmicityK2 k2 k3 xs
 | null xs = 0.0
 | otherwise = eval23K k2 k3 . syllableDurations2 . createSyllablesUkrP $ xs

rhythmicityV02 :: VB.Vector Char -> Float
rhythmicityV02 v
 | VB.null v = 0.0
 | otherwise = eval23 . syllableDurations2 . createSyllablesUkrV $ v

rhythmicityVK2 :: Float -> Float -> VB.Vector Char -> Float
rhythmicityVK2 k2 k3 v
 | VB.null v = 0.0
 | otherwise = eval23K k2 k3 . syllableDurations2 . createSyllablesUkrVP $ v