{-# LANGUAGE BangPatterns #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# OPTIONS_HADDOCK show-extensions #-}
module Aftovolio.Ukrainian.Melodics (
Sound8,
FlowSound,
convertToProperUkrainianI8WithTuples,
convertToProperUkrainianI8,
isUkrainianL,
linkFileNameI8,
дзT,
жT,
дT,
гT,
зT,
цT,
чT,
шT,
фT,
кT,
пT,
сT,
тT,
хT,
сьT,
нтT,
стT,
тьT,
цьT,
) where
import Aftovolio.Ukrainian.Common2
import CaseBi.Arr
import Data.Char
import Data.List (uncons)
import Data.Maybe (fromJust)
import GHC.Arr
import GHC.Base
import GHC.Int
import GHC.List
import GHC.Num ((-))
type Sound8 = Int8
type FlowSound = [Sound8]
convertToProperUkrainianI8 :: String -> FlowSound
convertToProperUkrainianI8 :: String -> [Sound8]
convertToProperUkrainianI8 =
let !tup1 :: Array Int (Sound8, Bool)
tup1 =
(Int, Int) -> [(Sound8, Bool)] -> Array Int (Sound8, Bool)
forall i e. Ix i => (i, i) -> [e] -> Array i e
listArray
(Int
0, Int
13)
[ (Sound8
10, Bool
True)
, (Sound8
17, Bool
True)
, (Sound8
21, Bool
True)
, (Sound8
25, Bool
True)
, (Sound8
32, Bool
True)
, (Sound8
38, Bool
True)
, (Sound8
39, Bool
True)
, (Sound8
41, Bool
True)
, (Sound8
43, Bool
True)
, (Sound8
45, Bool
True)
, (Sound8
47, Bool
True)
, (Sound8
49, Bool
True)
, (Sound8
50, Bool
True)
, (Sound8
52, Bool
True)
]
!tup2 :: Array Int (Sound8, Bool)
tup2 =
(Int, Int) -> [(Sound8, Bool)] -> Array Int (Sound8, Bool)
forall i e. Ix i => (i, i) -> [e] -> Array i e
listArray
(Int
0, Int
19)
[ (Sound8
10, Bool
True)
, (Sound8
15, Bool
True)
, (Sound8
17, Bool
True)
, (Sound8
19, Bool
True)
, (Sound8
21, Bool
True)
, (Sound8
25, Bool
True)
, (Sound8
28, Bool
True)
, (Sound8
30, Bool
True)
, (Sound8
32, Bool
True)
, (Sound8
34, Bool
True)
, (Sound8
36, Bool
True)
, (Sound8
38, Bool
True)
, (Sound8
39, Bool
True)
, (Sound8
41, Bool
True)
, (Sound8
43, Bool
True)
, (Sound8
45, Bool
True)
, (Sound8
47, Bool
True)
, (Sound8
49, Bool
True)
, (Sound8
50, Bool
True)
, (Sound8
52, Bool
True)
]
!tup3 :: Array Int (Sound8, Bool)
tup3 =
(Int, Int) -> [(Sound8, Bool)] -> Array Int (Sound8, Bool)
forall i e. Ix i => (i, i) -> [e] -> Array i e
listArray
(Int
0, Int
13)
[ (Sound8
10, Bool
False)
, (Sound8
17, Bool
False)
, (Sound8
21, Bool
False)
, (Sound8
25, Bool
False)
, (Sound8
32, Bool
False)
, (Sound8
38, Bool
False)
, (Sound8
39, Bool
False)
, (Sound8
41, Bool
False)
, (Sound8
43, Bool
False)
, (Sound8
45, Bool
False)
, (Sound8
47, Bool
False)
, (Sound8
49, Bool
False)
, (Sound8
50, Bool
False)
, (Sound8
52, Bool
False)
]
!tup4 :: Array Int (Sound8, Bool)
tup4 = (Int, Int) -> [(Sound8, Bool)] -> Array Int (Sound8, Bool)
forall i e. Ix i => (i, i) -> [e] -> Array i e
listArray (Int
0, Int
5) [(Sound8
17, Bool
True), (Sound8
32, Bool
True), (Sound8
38, Bool
True), (Sound8
49, Bool
True), (Sound8
50, Bool
True), (Sound8
52, Bool
True)]
!tup5 :: Array Int ([Sound8], Bool)
tup5 =
(Int, Int) -> [([Sound8], Bool)] -> Array Int ([Sound8], Bool)
forall i e. Ix i => (i, i) -> [e] -> Array i e
listArray
(Int
0, Int
8)
[ ([Sound8
17, Sound8
10], Bool
True)
, ([Sound8
17, Sound8
25], Bool
True)
, ([Sound8
32, Sound8
50], Bool
True)
, ([Sound8
38, Sound8
7], Bool
True)
, ([Sound8
49, Sound8
7], Bool
True)
, ([Sound8
49, Sound8
50], Bool
True)
, ([Sound8
50, Sound8
7], Bool
True)
, ([Sound8
50, Sound8
49], Bool
True)
, ([Sound8
52, Sound8
21], Bool
True)
]
!tup6 :: Array Int ([Sound8], Sound8)
tup6 =
(Int, Int) -> [([Sound8], Sound8)] -> Array Int ([Sound8], Sound8)
forall i e. Ix i => (i, i) -> [e] -> Array i e
listArray
(Int
0, Int
8)
[ ([Sound8
17, Sound8
10], Sound8
23)
, ([Sound8
17, Sound8
25], Sound8
8)
, ([Sound8
32, Sound8
50], Sound8
62)
, ([Sound8
38, Sound8
7], Sound8
66)
, ([Sound8
49, Sound8
7], Sound8
54)
, ([Sound8
49, Sound8
50], Sound8
63)
, ([Sound8
50, Sound8
7], Sound8
64)
, ([Sound8
50, Sound8
49], Sound8
38)
, ([Sound8
52, Sound8
21], Sound8
21)
]
!tup8 :: Array Int (Sound8, Bool)
tup8 =
(Int, Int) -> [(Sound8, Bool)] -> Array Int (Sound8, Bool)
forall i e. Ix i => (i, i) -> [e] -> Array i e
listArray
(Int
0, Int
7)
[ (Sound8
8, Bool
True)
, (Sound8
10, Bool
True)
, (Sound8
15, Bool
True)
, (Sound8
17, Bool
True)
, (Sound8
19, Bool
True)
, (Sound8
21, Bool
True)
, (Sound8
23, Bool
True)
, (Sound8
25, Bool
True)
]
!tup9 :: Array Int ([Sound8], Bool)
tup9 =
(Int, Int) -> [([Sound8], Bool)] -> Array Int ([Sound8], Bool)
forall i e. Ix i => (i, i) -> [e] -> Array i e
listArray
(Int
0, Int
10)
[ ([Sound8
15, Sound8
7], Bool
True)
, ([Sound8
17, Sound8
7], Bool
True)
, ([Sound8
28, Sound8
7], Bool
True)
, ([Sound8
30, Sound8
7], Bool
True)
, ([Sound8
32, Sound8
7], Bool
True)
, ([Sound8
36, Sound8
7], Bool
True)
, ([Sound8
38, Sound8
7], Bool
True)
, ([Sound8
43, Sound8
7], Bool
True)
, ([Sound8
47, Sound8
7], Bool
True)
, ([Sound8
49, Sound8
7], Bool
True)
, ([Sound8
50, Sound8
7], Bool
True)
]
!tup10 :: Array Int ([Sound8], Bool)
tup10 = (Int, Int) -> [([Sound8], Bool)] -> Array Int ([Sound8], Bool)
forall i e. Ix i => (i, i) -> [e] -> Array i e
listArray (Int
0, Int
4) [([Sound8
12], Bool
True), ([Sound8
13], Bool
True), ([Sound8
14], Bool
True), ([Sound8
64], Bool
True), ([Sound8
65], Bool
True)]
!tup11 :: Array Int ([Sound8], Bool)
tup11 =
(Int, Int) -> [([Sound8], Bool)] -> Array Int ([Sound8], Bool)
forall i e. Ix i => (i, i) -> [e] -> Array i e
listArray
(Int
0, Int
7)
[ ([Sound8
8, Sound8
7], Bool
True)
, ([Sound8
17, Sound8
7], Bool
True)
, ([Sound8
25, Sound8
7], Bool
True)
, ([Sound8
28, Sound8
7], Bool
True)
, ([Sound8
32, Sound8
7], Bool
True)
, ([Sound8
38, Sound8
7], Bool
True)
, ([Sound8
49, Sound8
7], Bool
True)
, ([Sound8
50, Sound8
7], Bool
True)
]
tup7 :: Array Int (Sound8, [Sound8] -> Sound8)
tup7 =
(Int, Int)
-> [(Sound8, [Sound8] -> Sound8)]
-> Array Int (Sound8, [Sound8] -> Sound8)
forall i e. Ix i => (i, i) -> [e] -> Array i e
listArray
(Int
0, Int
18)
[ (Sound8
8, Array Int ([Sound8], Bool)
-> Array Int ([Sound8], Bool) -> [Sound8] -> Sound8
дзT Array Int ([Sound8], Bool)
tup9 Array Int ([Sound8], Bool)
tup10)
, (Sound8
10, [Sound8] -> Sound8
жT)
, (Sound8
17, [Sound8] -> Sound8
дT)
, (Sound8
21, [Sound8] -> Sound8
гT)
, (Sound8
25, Array Int ([Sound8], Bool)
-> Array Int ([Sound8], Bool) -> [Sound8] -> Sound8
зT Array Int ([Sound8], Bool)
tup9 Array Int ([Sound8], Bool)
tup10)
, (Sound8
38, Array Int (Sound8, Bool)
-> Array Int ([Sound8], Bool)
-> Array Int ([Sound8], Bool)
-> [Sound8]
-> Sound8
цT Array Int (Sound8, Bool)
tup8 Array Int ([Sound8], Bool)
tup9 Array Int ([Sound8], Bool)
tup10)
, (Sound8
39, [Sound8] -> Sound8
чT)
, (Sound8
41, [Sound8] -> Sound8
шT)
, (Sound8
43, [Sound8] -> Sound8
фT)
, (Sound8
45, [Sound8] -> Sound8
кT)
, (Sound8
47, [Sound8] -> Sound8
пT)
, (Sound8
49, Array Int (Sound8, Bool)
-> Array Int ([Sound8], Bool)
-> Array Int ([Sound8], Bool)
-> [Sound8]
-> Sound8
сT Array Int (Sound8, Bool)
tup8 Array Int ([Sound8], Bool)
tup9 Array Int ([Sound8], Bool)
tup10)
, (Sound8
50, Array Int (Sound8, Bool)
-> Array Int ([Sound8], Bool)
-> Array Int ([Sound8], Bool)
-> [Sound8]
-> Sound8
тT Array Int (Sound8, Bool)
tup8 Array Int ([Sound8], Bool)
tup11 Array Int ([Sound8], Bool)
tup10)
, (Sound8
52, [Sound8] -> Sound8
хT)
, (Sound8
54, [Sound8] -> Sound8
сьT)
, (Sound8
62, [Sound8] -> Sound8
нтT)
, (Sound8
63, [Sound8] -> Sound8
стT)
, (Sound8
64, [Sound8] -> Sound8
тьT)
, (Sound8
66, [Sound8] -> Sound8
цьT)
]
!tup12 :: Array Int (Sound8, [Sound8])
tup12 =
(Int, Int) -> [(Sound8, [Sound8])] -> Array Int (Sound8, [Sound8])
forall i e. Ix i => (i, i) -> [e] -> Array i e
listArray
(Int
0, Int
6)
[ (Sound8
12, [Sound8
8, Sound8
7])
, (Sound8
13, [Sound8
25, Sound8
7])
, (Sound8
14, [Sound8
17, Sound8
7])
, (Sound8
62, [Sound8
32, Sound8
50])
, (Sound8
63, [Sound8
49, Sound8
50])
, (Sound8
64, [Sound8
50, Sound8
7])
, (Sound8
65, [Sound8
32, Sound8
7])
]
!tup13 :: Array Int (Char, Sound8)
tup13 =
(Int, Int) -> [(Char, Sound8)] -> Array Int (Char, Sound8)
forall i e. Ix i => (i, i) -> [e] -> Array i e
listArray
(Int
0, Int
36)
[ (Char
'\'', Sound8
102)
, (Char
'-', Sound8
101)
, (Char
'\700', Sound8
60)
, (Char
'\1072', Sound8
1)
, (Char
'\1073', Sound8
15)
, (Char
'\1074', Sound8
36)
, (Char
'\1075', Sound8
21)
, (Char
'\1076', Sound8
17)
, (Char
'\1077', Sound8
2)
, (Char
'\1078', Sound8
10)
, (Char
'\1079', Sound8
25)
, (Char
'\1080', Sound8
5)
, (Char
'\1081', Sound8
27)
, (Char
'\1082', Sound8
45)
, (Char
'\1083', Sound8
28)
, (Char
'\1084', Sound8
30)
, (Char
'\1085', Sound8
32)
, (Char
'\1086', Sound8
3)
, (Char
'\1087', Sound8
47)
, (Char
'\1088', Sound8
34)
, (Char
'\1089', Sound8
49)
, (Char
'\1090', Sound8
50)
, (Char
'\1091', Sound8
4)
, (Char
'\1092', Sound8
43)
, (Char
'\1093', Sound8
52)
, (Char
'\1094', Sound8
38)
, (Char
'\1095', Sound8
39)
, (Char
'\1096', Sound8
41)
, (Char
'\1097', Sound8
55)
, (Char
'\1100', Sound8
7)
, (Char
'\1102', Sound8
56)
, (Char
'\1103', Sound8
57)
, (Char
'\1108', Sound8
58)
, (Char
'\1110', Sound8
6)
, (Char
'\1111', Sound8
59)
, (Char
'\1169', Sound8
19)
, (Char
'\8217', Sound8
61)
]
!tup14 :: Array Int (Sound8, [Sound8])
tup14 =
(Int, Int) -> [(Sound8, [Sound8])] -> Array Int (Sound8, [Sound8])
forall i e. Ix i => (i, i) -> [e] -> Array i e
listArray
(Int
0, Int
8)
[ (Sound8
55, [Sound8
41, Sound8
39])
, (Sound8
56, [Sound8
27, Sound8
4])
, (Sound8
57, [Sound8
27, Sound8
1])
, (Sound8
58, [Sound8
27, Sound8
2])
, (Sound8
59, [Sound8
27, Sound8
6])
, (Sound8
60, [Sound8
101])
, (Sound8
61, [Sound8
101])
, (Sound8
101, [Sound8
101])
, (Sound8
102, [Sound8
101])
]
!tup15 :: Array Int (Char, Bool)
tup15 =
(Int, Int) -> [(Char, Bool)] -> Array Int (Char, Bool)
forall i e. Ix i => (i, i) -> [e] -> Array i e
listArray
(Int
0, Int
15)
[ (Char
'\'', Bool
True)
, (Char
'-', Bool
True)
, (Char
'\700', Bool
True)
, (Char
'\1028', Bool
True)
, (Char
'\1030', Bool
True)
, (Char
'\1031', Bool
True)
, (Char
'\1068', Bool
True)
, (Char
'\1100', Bool
True)
, (Char
'\1102', Bool
True)
, (Char
'\1103', Bool
True)
, (Char
'\1108', Bool
True)
, (Char
'\1110', Bool
True)
, (Char
'\1111', Bool
True)
, (Char
'\1168', Bool
True)
, (Char
'\1169', Bool
True)
, (Char
'\8217', Bool
True)
]
!tup16 :: Array Int (Char, Bool)
tup16 =
(Int, Int) -> [(Char, Bool)] -> Array Int (Char, Bool)
forall i e. Ix i => (i, i) -> [e] -> Array i e
listArray
(Int
0, Int
20)
[ (Char
'\1073', Bool
True)
, (Char
'\1074', Bool
True)
, (Char
'\1075', Bool
True)
, (Char
'\1076', Bool
True)
, (Char
'\1078', Bool
True)
, (Char
'\1079', Bool
True)
, (Char
'\1082', Bool
True)
, (Char
'\1083', Bool
True)
, (Char
'\1084', Bool
True)
, (Char
'\1085', Bool
True)
, (Char
'\1087', Bool
True)
, (Char
'\1088', Bool
True)
, (Char
'\1089', Bool
True)
, (Char
'\1090', Bool
True)
, (Char
'\1092', Bool
True)
, (Char
'\1093', Bool
True)
, (Char
'\1094', Bool
True)
, (Char
'\1095', Bool
True)
, (Char
'\1096', Bool
True)
, (Char
'\1097', Bool
True)
, (Char
'\1169', Bool
True)
]
in [Sound8] -> [Sound8]
correctB
([Sound8] -> [Sound8])
-> (String -> [Sound8]) -> String -> [Sound8]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Array Int (Sound8, [Sound8]) -> [Sound8] -> [Sound8]
correctA Array Int (Sound8, [Sound8])
tup12
([Sound8] -> [Sound8])
-> (String -> [Sound8]) -> String -> [Sound8]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Array Int (Sound8, [Sound8] -> Sound8) -> [Sound8] -> [Sound8]
applyChanges Array Int (Sound8, [Sound8] -> Sound8)
tup7
([Sound8] -> [Sound8])
-> (String -> [Sound8]) -> String -> [Sound8]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Array Int ([Sound8], Sound8) -> [[Sound8]] -> [Sound8]
bsToCharUkr Array Int ([Sound8], Sound8)
tup6
([[Sound8]] -> [Sound8])
-> (String -> [[Sound8]]) -> String -> [Sound8]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Array Int (Sound8, Bool)
-> Array Int (Sound8, Bool)
-> Array Int (Sound8, Bool)
-> Array Int (Sound8, Bool)
-> Array Int ([Sound8], Bool)
-> [Sound8]
-> [[Sound8]]
createTuplesByAnalysis Array Int (Sound8, Bool)
tup1 Array Int (Sound8, Bool)
tup2 Array Int (Sound8, Bool)
tup3 Array Int (Sound8, Bool)
tup4 Array Int ([Sound8], Bool)
tup5
([Sound8] -> [[Sound8]])
-> (String -> [Sound8]) -> String -> [[Sound8]]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Array Int (Sound8, [Sound8]) -> [Sound8] -> [Sound8]
secondConv Array Int (Sound8, [Sound8])
tup14
([Sound8] -> [Sound8])
-> (String -> [Sound8]) -> String -> [Sound8]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Array Int (Char, Sound8) -> String -> [Sound8]
filterUkr Array Int (Char, Sound8)
tup13
(String -> [Sound8]) -> (String -> String) -> String -> [Sound8]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Array Int (Char, Bool) -> String -> String
changeIotated Array Int (Char, Bool)
tup16
(String -> String) -> (String -> String) -> String -> String
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Char -> Bool) -> String -> String
forall a. (a -> Bool) -> [a] -> [a]
filter
(\Char
x -> Array Int (Char, Bool) -> Char -> Bool
isUkrainianLTup Array Int (Char, Bool)
tup15 Char
x Bool -> Bool -> Bool
|| Char -> Bool
isSpace Char
x Bool -> Bool -> Bool
|| Char -> Bool
isControl Char
x Bool -> Bool -> Bool
|| Char -> Bool
isPunctuation Char
x)
(String -> String) -> (String -> String) -> String -> String
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Char -> Char) -> String -> String
forall a b. (a -> b) -> [a] -> [b]
map Char -> Char
toLower
{-# INLINE convertToProperUkrainianI8 #-}
convertToProperUkrainianI8WithTuples ::
Array Int (Int8, Bool) ->
Array Int (Int8, Bool) ->
Array Int (Int8, Bool) ->
Array Int (Int8, Bool) ->
Array Int ([Int8], Bool) ->
Array Int ([Int8], Int8) ->
Array Int (Int8, FlowSound -> Sound8) ->
Array Int (Int8, Bool) ->
Array Int ([Int8], Bool) ->
Array Int ([Int8], Bool) ->
Array Int ([Int8], Bool) ->
Array Int (Int8, [Int8]) ->
Array Int (Char, Int8) ->
Array Int (Int8, [Int8]) ->
Array Int (Char, Bool) ->
Array Int (Char, Bool) ->
[Char] ->
FlowSound
convertToProperUkrainianI8WithTuples :: Array Int (Sound8, Bool)
-> Array Int (Sound8, Bool)
-> Array Int (Sound8, Bool)
-> Array Int (Sound8, Bool)
-> Array Int ([Sound8], Bool)
-> Array Int ([Sound8], Sound8)
-> Array Int (Sound8, [Sound8] -> Sound8)
-> Array Int (Sound8, Bool)
-> Array Int ([Sound8], Bool)
-> Array Int ([Sound8], Bool)
-> Array Int ([Sound8], Bool)
-> Array Int (Sound8, [Sound8])
-> Array Int (Char, Sound8)
-> Array Int (Sound8, [Sound8])
-> Array Int (Char, Bool)
-> Array Int (Char, Bool)
-> String
-> [Sound8]
convertToProperUkrainianI8WithTuples !Array Int (Sound8, Bool)
tup1 !Array Int (Sound8, Bool)
tup2 !Array Int (Sound8, Bool)
tup3 !Array Int (Sound8, Bool)
tup4 !Array Int ([Sound8], Bool)
tup5 !Array Int ([Sound8], Sound8)
tup6 Array Int (Sound8, [Sound8] -> Sound8)
tup7 !Array Int (Sound8, Bool)
tup8 !Array Int ([Sound8], Bool)
tup9 !Array Int ([Sound8], Bool)
tup10 !Array Int ([Sound8], Bool)
tup11 !Array Int (Sound8, [Sound8])
tup12 !Array Int (Char, Sound8)
tup13 !Array Int (Sound8, [Sound8])
tup14 !Array Int (Char, Bool)
tup15 !Array Int (Char, Bool)
tup16 =
[Sound8] -> [Sound8]
correctB
([Sound8] -> [Sound8])
-> (String -> [Sound8]) -> String -> [Sound8]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Array Int (Sound8, [Sound8]) -> [Sound8] -> [Sound8]
correctA Array Int (Sound8, [Sound8])
tup12
([Sound8] -> [Sound8])
-> (String -> [Sound8]) -> String -> [Sound8]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Array Int (Sound8, [Sound8] -> Sound8) -> [Sound8] -> [Sound8]
applyChanges Array Int (Sound8, [Sound8] -> Sound8)
tup7
([Sound8] -> [Sound8])
-> (String -> [Sound8]) -> String -> [Sound8]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Array Int ([Sound8], Sound8) -> [[Sound8]] -> [Sound8]
bsToCharUkr Array Int ([Sound8], Sound8)
tup6
([[Sound8]] -> [Sound8])
-> (String -> [[Sound8]]) -> String -> [Sound8]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Array Int (Sound8, Bool)
-> Array Int (Sound8, Bool)
-> Array Int (Sound8, Bool)
-> Array Int (Sound8, Bool)
-> Array Int ([Sound8], Bool)
-> [Sound8]
-> [[Sound8]]
createTuplesByAnalysis Array Int (Sound8, Bool)
tup1 Array Int (Sound8, Bool)
tup2 Array Int (Sound8, Bool)
tup3 Array Int (Sound8, Bool)
tup4 Array Int ([Sound8], Bool)
tup5
([Sound8] -> [[Sound8]])
-> (String -> [Sound8]) -> String -> [[Sound8]]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Array Int (Sound8, [Sound8]) -> [Sound8] -> [Sound8]
secondConv Array Int (Sound8, [Sound8])
tup14
([Sound8] -> [Sound8])
-> (String -> [Sound8]) -> String -> [Sound8]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Array Int (Char, Sound8) -> String -> [Sound8]
filterUkr Array Int (Char, Sound8)
tup13
(String -> [Sound8]) -> (String -> String) -> String -> [Sound8]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Array Int (Char, Bool) -> String -> String
changeIotated Array Int (Char, Bool)
tup16
(String -> String) -> (String -> String) -> String -> String
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Char -> Bool) -> String -> String
forall a. (a -> Bool) -> [a] -> [a]
filter
(\Char
x -> Array Int (Char, Bool) -> Char -> Bool
isUkrainianLTup Array Int (Char, Bool)
tup15 Char
x Bool -> Bool -> Bool
|| Char -> Bool
isSpace Char
x Bool -> Bool -> Bool
|| Char -> Bool
isControl Char
x Bool -> Bool -> Bool
|| Char -> Bool
isPunctuation Char
x)
(String -> String) -> (String -> String) -> String -> String
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Char -> Char) -> String -> String
forall a b. (a -> b) -> [a] -> [b]
map Char -> Char
toLower
{-# INLINE convertToProperUkrainianI8WithTuples #-}
changeIotated :: Array Int (Char, Bool) -> String -> String
changeIotated :: Array Int (Char, Bool) -> String -> String
changeIotated !Array Int (Char, Bool)
tup16 (Char
x : Char
y : String
zs)
| (Char
y Char -> String -> Bool
forall a. Eq a => a -> [a] -> Bool
`elem` (String
"\1102\1103\1108\1110" :: String)) Bool -> Bool -> Bool
&& Array Int (Char, Bool) -> Char -> Bool
isConsNotJTup Array Int (Char, Bool)
tup16 Char
x =
Char
x
Char -> String -> String
forall a. a -> [a] -> [a]
: Char
'\1100'
Char -> String -> String
forall a. a -> [a] -> [a]
: ( case Char
y of
Char
'\1102' -> Char
'\1091'
Char
'\1103' -> Char
'\1072'
Char
'\1108' -> Char
'\1077'
~Char
r -> Char
'\1110'
)
Char -> String -> String
forall a. a -> [a] -> [a]
: Array Int (Char, Bool) -> String -> String
changeIotated Array Int (Char, Bool)
tup16 String
zs
| Char
x Char -> Char -> Bool
forall a. Eq a => a -> a -> Bool
== Char
'\'' Bool -> Bool -> Bool
|| Char
x Char -> Char -> Bool
forall a. Eq a => a -> a -> Bool
== Char
'\x2019' Bool -> Bool -> Bool
|| Char
x Char -> Char -> Bool
forall a. Eq a => a -> a -> Bool
== Char
'\x02BC' Bool -> Bool -> Bool
|| Char
x Char -> Char -> Bool
forall a. Eq a => a -> a -> Bool
== Char
'-' =
if (Char
y Char -> String -> Bool
forall a. Eq a => a -> [a] -> Bool
`elem` (String
"\1102\1103\1108\1110" :: String))
then
Char
'\1081'
Char -> String -> String
forall a. a -> [a] -> [a]
: ( case Char
y of
Char
'\1102' -> Char
'\1091'
Char
'\1103' -> Char
'\1072'
Char
'\1108' -> Char
'\1077'
~Char
r -> Char
'\1110'
)
Char -> String -> String
forall a. a -> [a] -> [a]
: Array Int (Char, Bool) -> String -> String
changeIotated Array Int (Char, Bool)
tup16 String
zs
else Array Int (Char, Bool) -> String -> String
changeIotated Array Int (Char, Bool)
tup16 (Char
y Char -> String -> String
forall a. a -> [a] -> [a]
: String
zs)
| Bool
otherwise = Char
x Char -> String -> String
forall a. a -> [a] -> [a]
: Array Int (Char, Bool) -> String -> String
changeIotated Array Int (Char, Bool)
tup16 (Char
y Char -> String -> String
forall a. a -> [a] -> [a]
: String
zs)
changeIotated Array Int (Char, Bool)
_ String
xs = String
xs
filterUkr :: Array Int (Char, Int8) -> String -> FlowSound
filterUkr :: Array Int (Char, Sound8) -> String -> [Sound8]
filterUkr Array Int (Char, Sound8)
tup13 = let !tup :: (Sound8, Array Int (Char, Sound8))
tup = (Sound8
100, Array Int (Char, Sound8)
tup13) in (Char -> Sound8) -> String -> [Sound8]
forall a b. (a -> b) -> [a] -> [b]
map ((Sound8, Array Int (Char, Sound8)) -> Char -> Sound8
forall a b. Ord a => (b, Array Int (a, b)) -> a -> b
getBFst' (Sound8, Array Int (Char, Sound8))
tup)
{-# INLINE filterUkr #-}
secondConv :: Array Int (Int8, [Int8]) -> FlowSound -> FlowSound
secondConv :: Array Int (Sound8, [Sound8]) -> [Sound8] -> [Sound8]
secondConv Array Int (Sound8, [Sound8])
tup14 = (Sound8 -> [Sound8]) -> [Sound8] -> [Sound8]
forall a b. (a -> [b]) -> [a] -> [b]
concatMap (\Sound8
y -> ([Sound8], Array Int (Sound8, [Sound8])) -> Sound8 -> [Sound8]
forall a b. Ord a => (b, Array Int (a, b)) -> a -> b
getBFst' ([Sound8
y], Array Int (Sound8, [Sound8])
tup14) Sound8
y)
{-# INLINE secondConv #-}
createTuplesByAnalysis ::
Array Int (Int8, Bool) ->
Array Int (Int8, Bool) ->
Array Int (Int8, Bool) ->
Array Int (Int8, Bool) ->
Array Int ([Int8], Bool) ->
FlowSound ->
[FlowSound]
createTuplesByAnalysis :: Array Int (Sound8, Bool)
-> Array Int (Sound8, Bool)
-> Array Int (Sound8, Bool)
-> Array Int (Sound8, Bool)
-> Array Int ([Sound8], Bool)
-> [Sound8]
-> [[Sound8]]
createTuplesByAnalysis Array Int (Sound8, Bool)
tup1 Array Int (Sound8, Bool)
tup2 Array Int (Sound8, Bool)
tup3 Array Int (Sound8, Bool)
tup4 Array Int ([Sound8], Bool)
tup5 x :: [Sound8]
x@(Sound8
h : [Sound8]
ta)
| (Bool, Array Int (Sound8, Bool)) -> Sound8 -> Bool
forall a b. Ord a => (b, Array Int (a, b)) -> a -> b
getBFst' (Bool
False, Array Int (Sound8, Bool)
tup1) Sound8
h = Array Int (Sound8, Bool)
-> Array Int (Sound8, Bool)
-> Array Int ([Sound8], Bool)
-> [Sound8]
-> [[Sound8]]
initialA Array Int (Sound8, Bool)
tup3 Array Int (Sound8, Bool)
tup4 Array Int ([Sound8], Bool)
tup5 [Sound8]
x
| Bool -> Bool
not ([Sound8] -> Bool
forall a. [a] -> Bool
null [Sound8]
ta) Bool -> Bool -> Bool
&& ([Sound8] -> Sound8
forall a. HasCallStack => [a] -> a
head [Sound8]
ta Sound8 -> Sound8 -> Bool
forall a. Eq a => a -> a -> Bool
== Sound8
27 Bool -> Bool -> Bool
&& (Bool, Array Int (Sound8, Bool)) -> Sound8 -> Bool
forall a b. Ord a => (b, Array Int (a, b)) -> a -> b
getBFst' (Bool
False, Array Int (Sound8, Bool)
tup2) Sound8
h) =
[Sound8
h] [Sound8] -> [[Sound8]] -> [[Sound8]]
forall a. a -> [a] -> [a]
: [Sound8
7] [Sound8] -> [[Sound8]] -> [[Sound8]]
forall a. a -> [a] -> [a]
: Array Int (Sound8, Bool)
-> Array Int (Sound8, Bool)
-> Array Int (Sound8, Bool)
-> Array Int (Sound8, Bool)
-> Array Int ([Sound8], Bool)
-> [Sound8]
-> [[Sound8]]
createTuplesByAnalysis Array Int (Sound8, Bool)
tup1 Array Int (Sound8, Bool)
tup2 Array Int (Sound8, Bool)
tup3 Array Int (Sound8, Bool)
tup4 Array Int ([Sound8], Bool)
tup5 (Int -> [Sound8] -> [Sound8]
forall a. Int -> [a] -> [a]
drop Int
1 [Sound8]
ta)
| Bool
otherwise = [Sound8
h] [Sound8] -> [[Sound8]] -> [[Sound8]]
forall a. a -> [a] -> [a]
: Array Int (Sound8, Bool)
-> Array Int (Sound8, Bool)
-> Array Int (Sound8, Bool)
-> Array Int (Sound8, Bool)
-> Array Int ([Sound8], Bool)
-> [Sound8]
-> [[Sound8]]
createTuplesByAnalysis Array Int (Sound8, Bool)
tup1 Array Int (Sound8, Bool)
tup2 Array Int (Sound8, Bool)
tup3 Array Int (Sound8, Bool)
tup4 Array Int ([Sound8], Bool)
tup5 [Sound8]
ta
createTuplesByAnalysis Array Int (Sound8, Bool)
_ Array Int (Sound8, Bool)
_ Array Int (Sound8, Bool)
_ Array Int (Sound8, Bool)
_ Array Int ([Sound8], Bool)
_ [Sound8]
_ = []
initialA ::
Array Int (Int8, Bool) ->
Array Int (Int8, Bool) ->
Array Int ([Int8], Bool) ->
FlowSound ->
[FlowSound]
initialA :: Array Int (Sound8, Bool)
-> Array Int (Sound8, Bool)
-> Array Int ([Sound8], Bool)
-> [Sound8]
-> [[Sound8]]
initialA Array Int (Sound8, Bool)
tup3 Array Int (Sound8, Bool)
tup4 Array Int ([Sound8], Bool)
tup5 t1 :: [Sound8]
t1@(Sound8
t : [Sound8]
ts)
| Sound8
t Sound8 -> Sound8 -> Bool
forall a. Ord a => a -> a -> Bool
< Sound8
1 Bool -> Bool -> Bool
|| Sound8
t Sound8 -> Sound8 -> Bool
forall a. Ord a => a -> a -> Bool
> Sound8
99 = [Sound8
100] [Sound8] -> [[Sound8]] -> [[Sound8]]
forall a. a -> [a] -> [a]
: Array Int (Sound8, Bool)
-> Array Int (Sound8, Bool)
-> Array Int ([Sound8], Bool)
-> [Sound8]
-> [[Sound8]]
initialA Array Int (Sound8, Bool)
tup3 Array Int (Sound8, Bool)
tup4 Array Int ([Sound8], Bool)
tup5 [Sound8]
ts
| (Bool, Array Int (Sound8, Bool)) -> Sound8 -> Bool
forall a b. Ord a => (b, Array Int (a, b)) -> a -> b
getBFst' (Bool
True, Array Int (Sound8, Bool)
tup3) Sound8
t = [Sound8
t] [Sound8] -> [[Sound8]] -> [[Sound8]]
forall a. a -> [a] -> [a]
: Array Int (Sound8, Bool)
-> Array Int (Sound8, Bool)
-> Array Int ([Sound8], Bool)
-> [Sound8]
-> [[Sound8]]
initialA Array Int (Sound8, Bool)
tup3 Array Int (Sound8, Bool)
tup4 Array Int ([Sound8], Bool)
tup5 [Sound8]
ts
| (Bool, Array Int (Sound8, Bool)) -> Sound8 -> Bool
forall a b. Ord a => (b, Array Int (a, b)) -> a -> b
getBFst' (Bool
False, Array Int (Sound8, Bool)
tup4) Sound8
t =
let ([Sound8]
us, [Sound8]
vs) = Int -> [Sound8] -> ([Sound8], [Sound8])
forall a. Int -> [a] -> ([a], [a])
splitAt Int
2 [Sound8]
t1
in if (Bool, Array Int ([Sound8], Bool)) -> [Sound8] -> Bool
forall a b. Ord a => (b, Array Int (a, b)) -> a -> b
getBFst' (Bool
False, Array Int ([Sound8], Bool)
tup5) [Sound8]
us
then [Sound8]
us [Sound8] -> [[Sound8]] -> [[Sound8]]
forall a. a -> [a] -> [a]
: Array Int (Sound8, Bool)
-> Array Int (Sound8, Bool)
-> Array Int ([Sound8], Bool)
-> [Sound8]
-> [[Sound8]]
initialA Array Int (Sound8, Bool)
tup3 Array Int (Sound8, Bool)
tup4 Array Int ([Sound8], Bool)
tup5 [Sound8]
vs
else [Sound8
t] [Sound8] -> [[Sound8]] -> [[Sound8]]
forall a. a -> [a] -> [a]
: Array Int (Sound8, Bool)
-> Array Int (Sound8, Bool)
-> Array Int ([Sound8], Bool)
-> [Sound8]
-> [[Sound8]]
initialA Array Int (Sound8, Bool)
tup3 Array Int (Sound8, Bool)
tup4 Array Int ([Sound8], Bool)
tup5 [Sound8]
ts
| Bool
otherwise = [Sound8
t] [Sound8] -> [[Sound8]] -> [[Sound8]]
forall a. a -> [a] -> [a]
: Array Int (Sound8, Bool)
-> Array Int (Sound8, Bool)
-> Array Int ([Sound8], Bool)
-> [Sound8]
-> [[Sound8]]
initialA Array Int (Sound8, Bool)
tup3 Array Int (Sound8, Bool)
tup4 Array Int ([Sound8], Bool)
tup5 [Sound8]
ts
initialA Array Int (Sound8, Bool)
_ Array Int (Sound8, Bool)
_ Array Int ([Sound8], Bool)
_ [Sound8]
_ = []
bsToCharUkr :: Array Int ([Int8], Int8) -> [FlowSound] -> FlowSound
bsToCharUkr :: Array Int ([Sound8], Sound8) -> [[Sound8]] -> [Sound8]
bsToCharUkr Array Int ([Sound8], Sound8)
tup6 zs :: [[Sound8]]
zs@([Sound8]
_ : [[Sound8]]
_) = ([Sound8] -> Sound8) -> [[Sound8]] -> [Sound8]
forall a b. (a -> b) -> [a] -> [b]
map (Array Int ([Sound8], Sound8) -> [Sound8] -> Sound8
forall {b}. (Ord b, Num b) => Array Int ([b], b) -> [b] -> b
g Array Int ([Sound8], Sound8)
tup6) [[Sound8]]
zs
where
g :: Array Int ([b], b) -> [b] -> b
g Array Int ([b], b)
tup6 ts :: [b]
ts@(b
t : [b]
_) = (b, Array Int ([b], b)) -> [b] -> b
forall a b. Ord a => (b, Array Int (a, b)) -> a -> b
getBFst' (b
t, Array Int ([b], b)
tup6) [b]
ts
g Array Int ([b], b)
_ [b]
_ = b
101
bsToCharUkr Array Int ([Sound8], Sound8)
_ [[Sound8]]
_ = []
{-# INLINE bsToCharUkr #-}
applyChanges ::
Array Int (Int8, FlowSound -> Sound8) ->
FlowSound ->
FlowSound
applyChanges :: Array Int (Sound8, [Sound8] -> Sound8) -> [Sound8] -> [Sound8]
applyChanges Array Int (Sound8, [Sound8] -> Sound8)
tup7 [Sound8]
ys = (Sound8 -> [Sound8] -> [Sound8])
-> [Sound8] -> [Sound8] -> [Sound8]
forall a b. (a -> b -> b) -> b -> [a] -> b
foldr Sound8 -> [Sound8] -> [Sound8]
f [Sound8]
forall a. [a]
v [Sound8]
ys
where
v :: [a]
v = []
f :: Sound8 -> [Sound8] -> [Sound8]
f Sound8
x xs :: [Sound8]
xs@(Sound8
_ : [Sound8]
_) = ([Sound8] -> Sound8, Array Int (Sound8, [Sound8] -> Sound8))
-> Sound8 -> [Sound8] -> Sound8
forall a b. Ord a => (b, Array Int (a, b)) -> a -> b
getBFst' (\[Sound8]
_ -> Sound8
x, Array Int (Sound8, [Sound8] -> Sound8)
tup7) Sound8
x [Sound8]
xs Sound8 -> [Sound8] -> [Sound8]
forall a. a -> [a] -> [a]
: [Sound8]
xs
f Sound8
x [Sound8]
_ = [Sound8
x]
{-# INLINE applyChanges #-}
isVoicedObstruent :: FlowSound -> Bool
isVoicedObstruent :: [Sound8] -> Bool
isVoicedObstruent (Sound8
x : [Sound8]
_) = Sound8
x Sound8 -> Sound8 -> Bool
forall a. Ord a => a -> a -> Bool
> Sound8
7 Bool -> Bool -> Bool
&& Sound8
x Sound8 -> Sound8 -> Bool
forall a. Ord a => a -> a -> Bool
< Sound8
27
isVoicedObstruent [Sound8]
_ = Bool
False
{-# INLINE isVoicedObstruent #-}
isVoicedObstruentH :: Array Int (Int8, Bool) -> FlowSound -> Bool
isVoicedObstruentH :: Array Int (Sound8, Bool) -> [Sound8] -> Bool
isVoicedObstruentH Array Int (Sound8, Bool)
tup8 (Sound8
x : [Sound8]
_) = (Bool, Array Int (Sound8, Bool)) -> Sound8 -> Bool
forall a b. Ord a => (b, Array Int (a, b)) -> a -> b
getBFst' (Bool
False, Array Int (Sound8, Bool)
tup8) Sound8
x
isVoicedObstruentH Array Int (Sound8, Bool)
_ [Sound8]
_ = Bool
False
{-# INLINE isVoicedObstruentH #-}
isVoicedObstruentS :: FlowSound -> Bool
isVoicedObstruentS :: [Sound8] -> Bool
isVoicedObstruentS (Sound8
x : [Sound8]
_) = Sound8
x Sound8 -> Sound8 -> Bool
forall a. Ord a => a -> a -> Bool
> Sound8
11 Bool -> Bool -> Bool
&& Sound8
x Sound8 -> Sound8 -> Bool
forall a. Ord a => a -> a -> Bool
< Sound8
15
isVoicedObstruentS [Sound8]
_ = Bool
False
{-# INLINE isVoicedObstruentS #-}
isSoftDOrL ::
Array Int ([Int8], Bool) -> Array Int ([Int8], Bool) -> FlowSound -> Bool
isSoftDOrL :: Array Int ([Sound8], Bool)
-> Array Int ([Sound8], Bool) -> [Sound8] -> Bool
isSoftDOrL Array Int ([Sound8], Bool)
tup9 Array Int ([Sound8], Bool)
tup10 [Sound8]
xs =
(Bool, Array Int ([Sound8], Bool)) -> [Sound8] -> Bool
forall a b. Ord a => (b, Array Int (a, b)) -> a -> b
getBFst' (Bool
False, Array Int ([Sound8], Bool)
tup9) (Int -> [Sound8] -> [Sound8]
takeFromFT_ Int
2 [Sound8]
xs)
Bool -> Bool -> Bool
|| (Bool, Array Int ([Sound8], Bool)) -> [Sound8] -> Bool
forall a b. Ord a => (b, Array Int (a, b)) -> a -> b
getBFst' (Bool
False, Array Int ([Sound8], Bool)
tup10) (Int -> [Sound8] -> [Sound8]
takeFromFT_ Int
1 [Sound8]
xs)
{-# INLINE isSoftDOrL #-}
isSoftDen ::
Array Int ([Int8], Bool) -> Array Int ([Int8], Bool) -> FlowSound -> Bool
isSoftDen :: Array Int ([Sound8], Bool)
-> Array Int ([Sound8], Bool) -> [Sound8] -> Bool
isSoftDen Array Int ([Sound8], Bool)
tup11 Array Int ([Sound8], Bool)
tup10 [Sound8]
xs =
(Bool, Array Int ([Sound8], Bool)) -> [Sound8] -> Bool
forall a b. Ord a => (b, Array Int (a, b)) -> a -> b
getBFst' (Bool
False, Array Int ([Sound8], Bool)
tup11) (Int -> [Sound8] -> [Sound8]
takeFromFT_ Int
2 [Sound8]
xs)
Bool -> Bool -> Bool
|| (Bool, Array Int ([Sound8], Bool)) -> [Sound8] -> Bool
forall a b. Ord a => (b, Array Int (a, b)) -> a -> b
getBFst' (Bool
False, Array Int ([Sound8], Bool)
tup10) (Int -> [Sound8] -> [Sound8]
takeFromFT_ Int
1 [Sound8]
xs)
{-# INLINE isSoftDen #-}
гT :: FlowSound -> Sound8
гT :: [Sound8] -> Sound8
гT (Sound8
t : [Sound8]
_)
| Sound8
t Sound8 -> Sound8 -> Bool
forall a. Eq a => a -> a -> Bool
== Sound8
45 Bool -> Bool -> Bool
|| Sound8
t Sound8 -> Sound8 -> Bool
forall a. Eq a => a -> a -> Bool
== Sound8
50 = Sound8
52
| Bool
otherwise = Sound8
21
гT [Sound8]
_ = Sound8
21
{-# INLINE гT #-}
дT :: FlowSound -> Sound8
дT :: [Sound8] -> Sound8
дT t1 :: [Sound8]
t1@(Sound8
_ : [Sound8]
_)
| Int -> [Sound8] -> [Sound8]
takeFromFT_ Int
1 [Sound8]
t1 [Sound8] -> [[Sound8]] -> Bool
forall a. Eq a => a -> [a] -> Bool
`elem` [[Sound8
10], [Sound8
39], [Sound8
41]] = Sound8
23
| Int -> [Sound8] -> [Sound8]
takeFromFT_ Int
2 [Sound8]
t1 [Sound8] -> [[Sound8]] -> Bool
forall a. Eq a => a -> [a] -> Bool
`elem` [[Sound8
49, Sound8
7], [Sound8
38, Sound8
7]] = Sound8
12
| Int -> [Sound8] -> [Sound8]
takeFromFT_ Int
1 [Sound8]
t1 [Sound8] -> [[Sound8]] -> Bool
forall a. Eq a => a -> [a] -> Bool
`elem` [[Sound8
54], [Sound8
66]] = Sound8
12
| Int -> [Sound8] -> [Sound8]
takeFromFT_ Int
1 [Sound8]
t1 [Sound8] -> [[Sound8]] -> Bool
forall a. Eq a => a -> [a] -> Bool
`elem` [[Sound8
25], [Sound8
49], [Sound8
38]] = Sound8
8
| Bool
otherwise = Sound8
17
дT [Sound8]
_ = Sound8
17
{-# INLINE дT #-}
дзT :: Array Int ([Int8], Bool) -> Array Int ([Int8], Bool) -> FlowSound -> Sound8
дзT :: Array Int ([Sound8], Bool)
-> Array Int ([Sound8], Bool) -> [Sound8] -> Sound8
дзT Array Int ([Sound8], Bool)
tup9 Array Int ([Sound8], Bool)
tup10 t1 :: [Sound8]
t1@(Sound8
_ : [Sound8]
_)
| Array Int ([Sound8], Bool)
-> Array Int ([Sound8], Bool) -> [Sound8] -> Bool
isSoftDOrL Array Int ([Sound8], Bool)
tup9 Array Int ([Sound8], Bool)
tup10 [Sound8]
t1 = Sound8
12
| Bool
otherwise = Sound8
8
дзT Array Int ([Sound8], Bool)
_ Array Int ([Sound8], Bool)
_ [Sound8]
_ = Sound8
8
{-# INLINE дзT #-}
жT :: FlowSound -> Sound8
жT :: [Sound8] -> Sound8
жT t1 :: [Sound8]
t1@(Sound8
_ : [Sound8]
_)
| Int -> [Sound8] -> [Sound8]
takeFromFT Int
2 [Sound8]
t1 [Sound8] -> [[Sound8]] -> Bool
forall a. Eq a => a -> [a] -> Bool
`elem` [[Sound8
49, Sound8
7], [Sound8
38, Sound8
7]] = Sound8
13
| Int -> [Sound8] -> [Sound8]
takeFromFT Int
1 [Sound8]
t1 [Sound8] -> [[Sound8]] -> Bool
forall a. Eq a => a -> [a] -> Bool
`elem` [[Sound8
54], [Sound8
66]] = Sound8
13
| Bool
otherwise = Sound8
10
жT [Sound8]
_ = Sound8
10
{-# INLINE жT #-}
зT :: Array Int ([Int8], Bool) -> Array Int ([Int8], Bool) -> FlowSound -> Sound8
зT :: Array Int ([Sound8], Bool)
-> Array Int ([Sound8], Bool) -> [Sound8] -> Sound8
зT Array Int ([Sound8], Bool)
tup9 Array Int ([Sound8], Bool)
tup10 t1 :: [Sound8]
t1@(Sound8
_ : [Sound8]
_)
| Int -> [Sound8] -> [Sound8]
takeFromFT_ Int
1 [Sound8]
t1
[Sound8] -> [[Sound8]] -> Bool
forall a. Eq a => a -> [a] -> Bool
`elem` [[Sound8
10], [Sound8
39], [Sound8
41]] Bool -> Bool -> Bool
|| Int -> [Sound8] -> [Sound8]
takeFromFT_ Int
2 [Sound8]
t1 [Sound8] -> [Sound8] -> Bool
forall a. Eq a => a -> a -> Bool
== [Sound8
17, Sound8
10] Bool -> Bool -> Bool
|| Int -> [Sound8] -> [Sound8]
takeFromFT_ Int
1 [Sound8]
t1 [Sound8] -> [Sound8] -> Bool
forall a. Eq a => a -> a -> Bool
== [Sound8
23] =
Sound8
10
| Array Int ([Sound8], Bool)
-> Array Int ([Sound8], Bool) -> [Sound8] -> Bool
isSoftDOrL Array Int ([Sound8], Bool)
tup9 Array Int ([Sound8], Bool)
tup10 [Sound8]
t1 = Sound8
13
| Int -> [Sound8] -> [Sound8]
takeFromFT Int
1 [Sound8]
t1 [Sound8] -> [[Sound8]] -> Bool
forall a. Eq a => a -> [a] -> Bool
`elem` [[Sound8
39], [Sound8
41]] = Sound8
41
| Int -> [Sound8] -> [Sound8]
takeFromFT Int
1 [Sound8]
t1
[Sound8] -> [[Sound8]] -> Bool
forall a. Eq a => a -> [a] -> Bool
`elem` [[Sound8
49], [Sound8
38]] Bool -> Bool -> Bool
|| Int -> [Sound8] -> [Sound8]
takeFromFT_ Int
1 [Sound8]
t1
[Sound8] -> [[Sound8]] -> Bool
forall a. Eq a => a -> [a] -> Bool
`elem` [[Sound8
45], [Sound8
47], [Sound8
50], [Sound8
43], [Sound8
52]] =
Sound8
49
| Bool
otherwise = Sound8
25
зT Array Int ([Sound8], Bool)
_ Array Int ([Sound8], Bool)
_ [Sound8]
_ = Sound8
25
{-# INLINE зT #-}
кT :: FlowSound -> Sound8
кT :: [Sound8] -> Sound8
кT t1 :: [Sound8]
t1@(Sound8
_ : [Sound8]
_)
| [Sound8] -> Bool
isVoicedObstruent ([Sound8] -> Bool) -> ([Sound8] -> [Sound8]) -> [Sound8] -> Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Int -> [Sound8] -> [Sound8]
takeFromFT_ Int
1 ([Sound8] -> Bool) -> [Sound8] -> Bool
forall a b. (a -> b) -> a -> b
$ [Sound8]
t1 = Sound8
19
| Bool
otherwise = Sound8
45
кT [Sound8]
_ = Sound8
45
{-# INLINE кT #-}
нтT :: FlowSound -> Sound8
нтT :: [Sound8] -> Sound8
нтT t1 :: [Sound8]
t1@(Sound8
_ : [Sound8]
_)
| Int -> [Sound8] -> [Sound8]
takeFromFT Int
2 [Sound8]
t1 [Sound8] -> [Sound8] -> Bool
forall a. Eq a => a -> a -> Bool
== [Sound8
49, Sound8
50] Bool -> Bool -> Bool
|| Int -> [Sound8] -> [Sound8]
takeFromFT Int
1 [Sound8]
t1 [Sound8] -> [Sound8] -> Bool
forall a. Eq a => a -> a -> Bool
== [Sound8
63] = Sound8
32
| Int -> [Sound8] -> [Sound8]
takeFromFT Int
3 [Sound8]
t1 [Sound8] -> [Sound8] -> Bool
forall a. Eq a => a -> a -> Bool
== [Sound8
49, Sound8
7, Sound8
45] Bool -> Bool -> Bool
|| Int -> [Sound8] -> [Sound8]
takeFromFT Int
2 [Sound8]
t1 [Sound8] -> [Sound8] -> Bool
forall a. Eq a => a -> a -> Bool
== [Sound8
54, Sound8
45] = Sound8
65
| Bool
otherwise = Sound8
62
нтT [Sound8]
_ = Sound8
62
{-# INLINE нтT #-}
пT :: FlowSound -> Sound8
пT :: [Sound8] -> Sound8
пT t1 :: [Sound8]
t1@(Sound8
_ : [Sound8]
_)
| [Sound8] -> Bool
isVoicedObstruent ([Sound8] -> Bool) -> ([Sound8] -> [Sound8]) -> [Sound8] -> Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Int -> [Sound8] -> [Sound8]
takeFromFT_ Int
1 ([Sound8] -> Bool) -> [Sound8] -> Bool
forall a b. (a -> b) -> a -> b
$ [Sound8]
t1 = Sound8
15
| Bool
otherwise = Sound8
47
пT [Sound8]
_ = Sound8
47
{-# INLINE пT #-}
сT ::
Array Int (Int8, Bool) ->
Array Int ([Int8], Bool) ->
Array Int ([Int8], Bool) ->
FlowSound ->
Sound8
сT :: Array Int (Sound8, Bool)
-> Array Int ([Sound8], Bool)
-> Array Int ([Sound8], Bool)
-> [Sound8]
-> Sound8
сT Array Int (Sound8, Bool)
tup8 Array Int ([Sound8], Bool)
tup9 Array Int ([Sound8], Bool)
tup10 t1 :: [Sound8]
t1@(Sound8
_ : [Sound8]
_)
| ( (Array Int (Sound8, Bool) -> [Sound8] -> Bool
isVoicedObstruentH Array Int (Sound8, Bool)
tup8 ([Sound8] -> Bool) -> ([Sound8] -> [Sound8]) -> [Sound8] -> Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Int -> [Sound8] -> [Sound8]
takeFromFT_ Int
1 ([Sound8] -> Bool) -> [Sound8] -> Bool
forall a b. (a -> b) -> a -> b
$ [Sound8]
t1)
Bool -> Bool -> Bool
&& Int -> [Sound8] -> [Sound8]
forall a. Int -> [a] -> [a]
drop Int
1 (Int -> [Sound8] -> [Sound8]
takeFromFT_ Int
2 [Sound8]
t1)
[Sound8] -> [Sound8] -> Bool
forall a. Eq a => a -> a -> Bool
== [Sound8
7]
)
Bool -> Bool -> Bool
|| [Sound8] -> Bool
isVoicedObstruentS (Int -> [Sound8] -> [Sound8]
takeFromFT_ Int
1 [Sound8]
t1) =
Sound8
13
| Array Int (Sound8, Bool) -> [Sound8] -> Bool
isVoicedObstruentH Array Int (Sound8, Bool)
tup8 ([Sound8] -> Bool) -> ([Sound8] -> [Sound8]) -> [Sound8] -> Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Int -> [Sound8] -> [Sound8]
takeFromFT_ Int
1 ([Sound8] -> Bool) -> [Sound8] -> Bool
forall a b. (a -> b) -> a -> b
$ [Sound8]
t1 = Sound8
25
| Array Int ([Sound8], Bool)
-> Array Int ([Sound8], Bool) -> [Sound8] -> Bool
isSoftDOrL Array Int ([Sound8], Bool)
tup9 Array Int ([Sound8], Bool)
tup10 [Sound8]
t1 = Sound8
54
| Int -> [Sound8] -> [Sound8]
takeFromFT_ Int
1 [Sound8]
t1 [Sound8] -> [Sound8] -> Bool
forall a. Eq a => a -> a -> Bool
== [Sound8
41] = Sound8
41
| Bool
otherwise = Sound8
49
сT Array Int (Sound8, Bool)
_ Array Int ([Sound8], Bool)
_ Array Int ([Sound8], Bool)
_ [Sound8]
_ = Sound8
49
{-# INLINE сT #-}
стT :: FlowSound -> Sound8
стT :: [Sound8] -> Sound8
стT t1 :: [Sound8]
t1@(Sound8
_ : [Sound8]
_)
| [Sound8] -> Bool
isVoicedObstruent ([Sound8] -> Bool) -> ([Sound8] -> [Sound8]) -> [Sound8] -> Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Int -> [Sound8] -> [Sound8]
takeFromFT_ Int
1 ([Sound8] -> Bool) -> [Sound8] -> Bool
forall a b. (a -> b) -> a -> b
$ [Sound8]
t1 = Sound8
25
| Int -> [Sound8] -> [Sound8]
takeFromFT_ Int
3 [Sound8]
t1
[Sound8] -> [Sound8] -> Bool
forall a. Eq a => a -> a -> Bool
== [Sound8
49, Sound8
7, Sound8
45]
Bool -> Bool -> Bool
|| (Int -> [Sound8] -> [Sound8]
takeFromFT_ Int
2 [Sound8]
t1 [Sound8] -> [[Sound8]] -> Bool
forall a. Eq a => a -> [a] -> Bool
`elem` [[Sound8
54, Sound8
45], [Sound8
38, Sound8
7]])
Bool -> Bool -> Bool
|| Int -> [Sound8] -> [Sound8]
takeFromFT_ Int
1 [Sound8]
t1
[Sound8] -> [Sound8] -> Bool
forall a. Eq a => a -> a -> Bool
== [Sound8
66] =
Sound8
54
| Int -> [Sound8] -> [Sound8]
takeFromFT_ Int
1 [Sound8]
t1 [Sound8] -> [[Sound8]] -> Bool
forall a. Eq a => a -> [a] -> Bool
`elem` [[Sound8
49], [Sound8
32]] = Sound8
49
| Int -> [Sound8] -> [Sound8]
takeFromFT_ Int
1 [Sound8]
t1 [Sound8] -> [Sound8] -> Bool
forall a. Eq a => a -> a -> Bool
== [Sound8
39] = Sound8
41
| Bool
otherwise = Sound8
63
стT [Sound8]
_ = Sound8
63
{-# INLINE стT #-}
сьT :: FlowSound -> Sound8
сьT :: [Sound8] -> Sound8
сьT t1 :: [Sound8]
t1@(Sound8
_ : [Sound8]
_)
| [Sound8] -> Bool
isVoicedObstruent ([Sound8] -> Bool) -> ([Sound8] -> [Sound8]) -> [Sound8] -> Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Int -> [Sound8] -> [Sound8]
takeFromFT_ Int
1 ([Sound8] -> Bool) -> [Sound8] -> Bool
forall a b. (a -> b) -> a -> b
$ [Sound8]
t1 = Sound8
13
| Bool
otherwise = Sound8
54
сьT [Sound8]
_ = Sound8
54
{-# INLINE сьT #-}
тT ::
Array Int (Int8, Bool) ->
Array Int ([Int8], Bool) ->
Array Int ([Int8], Bool) ->
FlowSound ->
Sound8
тT :: Array Int (Sound8, Bool)
-> Array Int ([Sound8], Bool)
-> Array Int ([Sound8], Bool)
-> [Sound8]
-> Sound8
тT Array Int (Sound8, Bool)
tup8 Array Int ([Sound8], Bool)
tup11 Array Int ([Sound8], Bool)
tup10 t1 :: [Sound8]
t1@(Sound8
_ : [Sound8]
_)
| ( (Array Int (Sound8, Bool) -> [Sound8] -> Bool
isVoicedObstruentH Array Int (Sound8, Bool)
tup8 ([Sound8] -> Bool) -> ([Sound8] -> [Sound8]) -> [Sound8] -> Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Int -> [Sound8] -> [Sound8]
takeFromFT_ Int
1 ([Sound8] -> Bool) -> [Sound8] -> Bool
forall a b. (a -> b) -> a -> b
$ [Sound8]
t1)
Bool -> Bool -> Bool
&& Int -> [Sound8] -> [Sound8]
forall a. Int -> [a] -> [a]
drop Int
1 (Int -> [Sound8] -> [Sound8]
takeFromFT_ Int
2 [Sound8]
t1)
[Sound8] -> [Sound8] -> Bool
forall a. Eq a => a -> a -> Bool
== [Sound8
7]
)
Bool -> Bool -> Bool
|| [Sound8] -> Bool
isVoicedObstruentS (Int -> [Sound8] -> [Sound8]
takeFromFT_ Int
1 [Sound8]
t1) =
Sound8
14
| Array Int (Sound8, Bool) -> [Sound8] -> Bool
isVoicedObstruentH Array Int (Sound8, Bool)
tup8 ([Sound8] -> Bool) -> ([Sound8] -> [Sound8]) -> [Sound8] -> Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Int -> [Sound8] -> [Sound8]
takeFromFT_ Int
1 ([Sound8] -> Bool) -> [Sound8] -> Bool
forall a b. (a -> b) -> a -> b
$ [Sound8]
t1 = Sound8
17
| Int -> [Sound8] -> [Sound8]
takeFromFT_ Int
2 [Sound8]
t1 [Sound8] -> [Sound8] -> Bool
forall a. Eq a => a -> a -> Bool
== [Sound8
38, Sound8
7] Bool -> Bool -> Bool
|| Int -> [Sound8] -> [Sound8]
takeFromFT_ Int
1 [Sound8]
t1 [Sound8] -> [Sound8] -> Bool
forall a. Eq a => a -> a -> Bool
== [Sound8
66] = Sound8
66
| Int -> [Sound8] -> [Sound8]
takeFromFT_ Int
1 [Sound8]
t1 [Sound8] -> [Sound8] -> Bool
forall a. Eq a => a -> a -> Bool
== [Sound8
38] = Sound8
38
| Array Int ([Sound8], Bool)
-> Array Int ([Sound8], Bool) -> [Sound8] -> Bool
isSoftDen Array Int ([Sound8], Bool)
tup11 Array Int ([Sound8], Bool)
tup10 [Sound8]
t1 = Sound8
64
| Int -> [Sound8] -> [Sound8]
takeFromFT_ Int
1 [Sound8]
t1 [Sound8] -> [[Sound8]] -> Bool
forall a. Eq a => a -> [a] -> Bool
`elem` [[Sound8
39], [Sound8
41]] = Sound8
39
| Bool
otherwise = Sound8
50
тT Array Int (Sound8, Bool)
_ Array Int ([Sound8], Bool)
_ Array Int ([Sound8], Bool)
_ [Sound8]
_ = Sound8
50
{-# INLINE тT #-}
тьT :: FlowSound -> Sound8
тьT :: [Sound8] -> Sound8
тьT t1 :: [Sound8]
t1@(Sound8
_ : [Sound8]
_)
| [Sound8] -> Bool
isVoicedObstruent ([Sound8] -> Bool) -> ([Sound8] -> [Sound8]) -> [Sound8] -> Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Int -> [Sound8] -> [Sound8]
takeFromFT_ Int
1 ([Sound8] -> Bool) -> [Sound8] -> Bool
forall a b. (a -> b) -> a -> b
$ [Sound8]
t1 = Sound8
14
| Int -> [Sound8] -> [Sound8]
takeFromFT_ Int
3 [Sound8]
t1 [Sound8] -> [Sound8] -> Bool
forall a. Eq a => a -> a -> Bool
== [Sound8
49, Sound8
7, Sound8
1] Bool -> Bool -> Bool
|| Int -> [Sound8] -> [Sound8]
takeFromFT_ Int
2 [Sound8]
t1 [Sound8] -> [Sound8] -> Bool
forall a. Eq a => a -> a -> Bool
== [Sound8
54, Sound8
1] = Sound8
66
| Bool
otherwise = Sound8
64
тьT [Sound8]
_ = Sound8
64
{-# INLINE тьT #-}
фT :: FlowSound -> Sound8
фT :: [Sound8] -> Sound8
фT t1 :: [Sound8]
t1@(Sound8
_ : [Sound8]
_)
| [Sound8] -> Bool
isVoicedObstruent ([Sound8] -> Bool) -> ([Sound8] -> [Sound8]) -> [Sound8] -> Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Int -> [Sound8] -> [Sound8]
takeFromFT_ Int
1 ([Sound8] -> Bool) -> [Sound8] -> Bool
forall a b. (a -> b) -> a -> b
$ [Sound8]
t1 = Sound8
36
| Bool
otherwise = Sound8
43
фT [Sound8]
_ = Sound8
43
{-# INLINE фT #-}
хT :: FlowSound -> Sound8
хT :: [Sound8] -> Sound8
хT t1 :: [Sound8]
t1@(Sound8
_ : [Sound8]
_)
| [Sound8] -> Bool
isVoicedObstruent ([Sound8] -> Bool) -> ([Sound8] -> [Sound8]) -> [Sound8] -> Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Int -> [Sound8] -> [Sound8]
takeFromFT_ Int
1 ([Sound8] -> Bool) -> [Sound8] -> Bool
forall a b. (a -> b) -> a -> b
$ [Sound8]
t1 = Sound8
21
| Bool
otherwise = Sound8
52
хT [Sound8]
_ = Sound8
52
{-# INLINE хT #-}
цT ::
Array Int (Int8, Bool) ->
Array Int ([Int8], Bool) ->
Array Int ([Int8], Bool) ->
FlowSound ->
Sound8
цT :: Array Int (Sound8, Bool)
-> Array Int ([Sound8], Bool)
-> Array Int ([Sound8], Bool)
-> [Sound8]
-> Sound8
цT Array Int (Sound8, Bool)
tup8 Array Int ([Sound8], Bool)
tup9 Array Int ([Sound8], Bool)
tup10 t1 :: [Sound8]
t1@(Sound8
_ : [Sound8]
_)
| ( (Array Int (Sound8, Bool) -> [Sound8] -> Bool
isVoicedObstruentH Array Int (Sound8, Bool)
tup8 ([Sound8] -> Bool) -> ([Sound8] -> [Sound8]) -> [Sound8] -> Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Int -> [Sound8] -> [Sound8]
takeFromFT_ Int
1 ([Sound8] -> Bool) -> [Sound8] -> Bool
forall a b. (a -> b) -> a -> b
$ [Sound8]
t1)
Bool -> Bool -> Bool
&& Int -> [Sound8] -> [Sound8]
forall a. Int -> [a] -> [a]
drop Int
1 (Int -> [Sound8] -> [Sound8]
takeFromFT_ Int
2 [Sound8]
t1)
[Sound8] -> [Sound8] -> Bool
forall a. Eq a => a -> a -> Bool
== [Sound8
7]
)
Bool -> Bool -> Bool
|| [Sound8] -> Bool
isVoicedObstruentS (Int -> [Sound8] -> [Sound8]
takeFromFT_ Int
1 [Sound8]
t1) =
Sound8
12
| Array Int ([Sound8], Bool)
-> Array Int ([Sound8], Bool) -> [Sound8] -> Bool
isSoftDOrL Array Int ([Sound8], Bool)
tup9 Array Int ([Sound8], Bool)
tup10 [Sound8]
t1 = Sound8
66
| Array Int (Sound8, Bool) -> [Sound8] -> Bool
isVoicedObstruentH Array Int (Sound8, Bool)
tup8 ([Sound8] -> Bool) -> ([Sound8] -> [Sound8]) -> [Sound8] -> Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Int -> [Sound8] -> [Sound8]
takeFromFT_ Int
1 ([Sound8] -> Bool) -> [Sound8] -> Bool
forall a b. (a -> b) -> a -> b
$ [Sound8]
t1 = Sound8
8
| Bool
otherwise = Sound8
38
цT Array Int (Sound8, Bool)
_ Array Int ([Sound8], Bool)
_ Array Int ([Sound8], Bool)
_ [Sound8]
_ = Sound8
38
{-# INLINE цT #-}
цьT :: FlowSound -> Sound8
цьT :: [Sound8] -> Sound8
цьT t1 :: [Sound8]
t1@(Sound8
_ : [Sound8]
_)
| ([Sound8] -> Bool
isVoicedObstruent ([Sound8] -> Bool) -> ([Sound8] -> [Sound8]) -> [Sound8] -> Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Int -> [Sound8] -> [Sound8]
takeFromFT_ Int
1 ([Sound8] -> Bool) -> [Sound8] -> Bool
forall a b. (a -> b) -> a -> b
$ [Sound8]
t1) Bool -> Bool -> Bool
&& Int -> [Sound8] -> [Sound8]
forall a. Int -> [a] -> [a]
drop Int
1 (Int -> [Sound8] -> [Sound8]
takeFromFT_ Int
2 [Sound8]
t1) [Sound8] -> [Sound8] -> Bool
forall a. Eq a => a -> a -> Bool
== [Sound8
7] =
Sound8
12
| Bool
otherwise = Sound8
66
цьT [Sound8]
_ = Sound8
66
{-# INLINE цьT #-}
чT :: FlowSound -> Sound8
чT :: [Sound8] -> Sound8
чT t1 :: [Sound8]
t1@(Sound8
_ : [Sound8]
_)
| Int -> [Sound8] -> [Sound8]
takeFromFT_ Int
2 [Sound8]
t1 [Sound8] -> [[Sound8]] -> Bool
forall a. Eq a => a -> [a] -> Bool
`elem` [[Sound8
49, Sound8
7], [Sound8
38, Sound8
7]] Bool -> Bool -> Bool
|| Int -> [Sound8] -> [Sound8]
takeFromFT_ Int
1 [Sound8]
t1 [Sound8] -> [[Sound8]] -> Bool
forall a. Eq a => a -> [a] -> Bool
`elem` [[Sound8
54], [Sound8
66]] =
Sound8
66
| [Sound8] -> Bool
isVoicedObstruent ([Sound8] -> Bool) -> ([Sound8] -> [Sound8]) -> [Sound8] -> Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Int -> [Sound8] -> [Sound8]
takeFromFT_ Int
1 ([Sound8] -> Bool) -> [Sound8] -> Bool
forall a b. (a -> b) -> a -> b
$ [Sound8]
t1 = Sound8
23
| Bool
otherwise = Sound8
39
чT [Sound8]
_ = Sound8
39
{-# INLINE чT #-}
шT :: FlowSound -> Sound8
шT :: [Sound8] -> Sound8
шT t1 :: [Sound8]
t1@(Sound8
_ : [Sound8]
_)
| Int -> [Sound8] -> [Sound8]
takeFromFT_ Int
2 [Sound8]
t1 [Sound8] -> [[Sound8]] -> Bool
forall a. Eq a => a -> [a] -> Bool
`elem` [[Sound8
49, Sound8
7], [Sound8
38, Sound8
7]] Bool -> Bool -> Bool
|| Int -> [Sound8] -> [Sound8]
takeFromFT_ Int
1 [Sound8]
t1 [Sound8] -> [[Sound8]] -> Bool
forall a. Eq a => a -> [a] -> Bool
`elem` [[Sound8
54], [Sound8
66]] =
Sound8
54
| [Sound8] -> Bool
isVoicedObstruent ([Sound8] -> Bool) -> ([Sound8] -> [Sound8]) -> [Sound8] -> Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Int -> [Sound8] -> [Sound8]
takeFromFT_ Int
1 ([Sound8] -> Bool) -> [Sound8] -> Bool
forall a b. (a -> b) -> a -> b
$ [Sound8]
t1 = Sound8
10
| Bool
otherwise = Sound8
41
шT [Sound8]
_ = Sound8
41
{-# INLINE шT #-}
takeFromFT :: Int -> FlowSound -> FlowSound
takeFromFT :: Int -> [Sound8] -> [Sound8]
takeFromFT Int
n [Sound8]
ts
| if Int
n Int -> Int -> Bool
forall a. Ord a => a -> a -> Bool
< Int
1 then Bool
True else [Sound8] -> Bool
forall a. [a] -> Bool
null [Sound8]
ts = []
| Int
n Int -> Int -> Bool
forall a. Ord a => a -> a -> Bool
< Int
2 = [Sound8
k]
| Bool
otherwise = Sound8
k Sound8 -> [Sound8] -> [Sound8]
forall a. a -> [a] -> [a]
: Int -> [Sound8] -> [Sound8]
takeFromFT (Int
n Int -> Int -> Int
forall a. Num a => a -> a -> a
- Int
1) (Int -> [Sound8] -> [Sound8]
forall a. Int -> [a] -> [a]
take (Int
n Int -> Int -> Int
forall a. Num a => a -> a -> a
- Int
1) [Sound8]
ts)
where
k :: Sound8
k = [Sound8] -> Sound8
forall a. HasCallStack => [a] -> a
head [Sound8]
ts
takeFromFT2 :: Int -> FlowSound -> FlowSound
takeFromFT2 :: Int -> [Sound8] -> [Sound8]
takeFromFT2 Int
n [Sound8]
ts
| if Int
n Int -> Int -> Bool
forall a. Ord a => a -> a -> Bool
< Int
1 then Bool
True else [Sound8] -> Bool
forall a. [a] -> Bool
null [Sound8]
ts = []
| Int
n Int -> Int -> Bool
forall a. Ord a => a -> a -> Bool
< Int
2 = [Sound8
ks]
| Bool
otherwise = Sound8
ks Sound8 -> [Sound8] -> [Sound8]
forall a. a -> [a] -> [a]
: Int -> [Sound8] -> [Sound8]
takeFromFT2 (Int
n Int -> Int -> Int
forall a. Num a => a -> a -> a
- Int
1) ([Sound8] -> [Sound8]
forall a. HasCallStack => [a] -> [a]
tail [Sound8]
ts)
where
ks :: Sound8
ks = [Sound8] -> Sound8
forall a. HasCallStack => [a] -> a
head [Sound8]
ts
dropFromFT2 :: Int -> FlowSound -> FlowSound
dropFromFT2 :: Int -> [Sound8] -> [Sound8]
dropFromFT2 Int
n [Sound8]
ts
| if Int
n Int -> Int -> Bool
forall a. Ord a => a -> a -> Bool
< Int
1 then Bool
True else [Sound8] -> Bool
forall a. [a] -> Bool
null [Sound8]
ts = []
| Int
n Int -> Int -> Bool
forall a. Ord a => a -> a -> Bool
< Int
2 = [Sound8] -> [Sound8]
forall a. HasCallStack => [a] -> [a]
tail [Sound8]
ts
| Bool
otherwise = Int -> [Sound8] -> [Sound8]
dropFromFT2 (Int
n Int -> Int -> Int
forall a. Num a => a -> a -> a
- Int
1) ([Sound8] -> [Sound8]
forall a. HasCallStack => [a] -> [a]
tail [Sound8]
ts)
takeFromFT_ :: Int -> FlowSound -> FlowSound
takeFromFT_ :: Int -> [Sound8] -> [Sound8]
takeFromFT_ Int
n = Int -> [Sound8] -> [Sound8]
takeFromFT Int
n ([Sound8] -> [Sound8])
-> ([Sound8] -> [Sound8]) -> [Sound8] -> [Sound8]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Sound8 -> Bool) -> [Sound8] -> [Sound8]
forall a. (a -> Bool) -> [a] -> [a]
filter (\Sound8
t -> Sound8
t Sound8 -> Sound8 -> Bool
forall a. Ord a => a -> a -> Bool
> Sound8
0 Bool -> Bool -> Bool
&& Sound8
t Sound8 -> Sound8 -> Bool
forall a. Ord a => a -> a -> Bool
< Sound8
100)
{-# INLINE takeFromFT_ #-}
correctA :: Array Int (Int8, [Int8]) -> FlowSound -> FlowSound
correctA :: Array Int (Sound8, [Sound8]) -> [Sound8] -> [Sound8]
correctA Array Int (Sound8, [Sound8])
tup12 = [Sound8] -> [Sound8]
correctSomeW ([Sound8] -> [Sound8])
-> ([Sound8] -> [Sound8]) -> [Sound8] -> [Sound8]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Array Int (Sound8, [Sound8]) -> [Sound8] -> [Sound8]
separateSoftS Array Int (Sound8, [Sound8])
tup12
{-# INLINE correctA #-}
separateSoftS :: Array Int (Int8, [Int8]) -> FlowSound -> FlowSound
separateSoftS :: Array Int (Sound8, [Sound8]) -> [Sound8] -> [Sound8]
separateSoftS Array Int (Sound8, [Sound8])
tup12 = (Sound8 -> [Sound8]) -> [Sound8] -> [Sound8]
forall a b. (a -> [b]) -> [a] -> [b]
concatMap (\Sound8
x -> ([Sound8], Array Int (Sound8, [Sound8])) -> Sound8 -> [Sound8]
forall a b. Ord a => (b, Array Int (a, b)) -> a -> b
getBFst' ([Sound8
x], Array Int (Sound8, [Sound8])
tup12) Sound8
x)
{-# INLINE separateSoftS #-}
correctSomeW :: FlowSound -> FlowSound
correctSomeW :: [Sound8] -> [Sound8]
correctSomeW (Sound8
x : Sound8
y : Sound8
z : xs :: [Sound8]
xs@(Sound8
t : [Sound8]
ys))
| Sound8
x Sound8 -> Sound8 -> Bool
forall a. Eq a => a -> a -> Bool
== Sound8
50 Bool -> Bool -> Bool
&& Sound8
y Sound8 -> Sound8 -> Bool
forall a. Eq a => a -> a -> Bool
== Sound8
7 Bool -> Bool -> Bool
&& Sound8
z Sound8 -> Sound8 -> Bool
forall a. Eq a => a -> a -> Bool
== Sound8
54 Bool -> Bool -> Bool
&& Sound8
t Sound8 -> Sound8 -> Bool
forall a. Eq a => a -> a -> Bool
== Sound8
1 = Sound8
66 Sound8 -> [Sound8] -> [Sound8]
forall a. a -> [a] -> [a]
: Sound8
66 Sound8 -> [Sound8] -> [Sound8]
forall a. a -> [a] -> [a]
: Sound8
1 Sound8 -> [Sound8] -> [Sound8]
forall a. a -> [a] -> [a]
: [Sound8] -> [Sound8]
correctSomeW [Sound8]
ys
| (Sound8
x Sound8 -> Sound8 -> Bool
forall a. Ord a => a -> a -> Bool
> Sound8
99) Bool -> Bool -> Bool
&& Sound8
y Sound8 -> Sound8 -> Bool
forall a. Eq a => a -> a -> Bool
== Sound8
27 Bool -> Bool -> Bool
&& Sound8
z Sound8 -> Sound8 -> Bool
forall a. Eq a => a -> a -> Bool
== Sound8
1 =
if Int -> [Sound8] -> [Sound8]
forall a. Int -> [a] -> [a]
take Int
2 [Sound8]
xs [Sound8] -> [Sound8] -> Bool
forall a. Eq a => a -> a -> Bool
== [Sound8
39, Sound8
32]
then Sound8
x Sound8 -> [Sound8] -> [Sound8]
forall a. a -> [a] -> [a]
: Sound8
y Sound8 -> [Sound8] -> [Sound8]
forall a. a -> [a] -> [a]
: Sound8
z Sound8 -> [Sound8] -> [Sound8]
forall a. a -> [a] -> [a]
: Sound8
41 Sound8 -> [Sound8] -> [Sound8]
forall a. a -> [a] -> [a]
: [Sound8] -> [Sound8]
correctSomeW [Sound8]
ys
else Sound8
x Sound8 -> [Sound8] -> [Sound8]
forall a. a -> [a] -> [a]
: [Sound8] -> [Sound8]
correctSomeW (Sound8
y Sound8 -> [Sound8] -> [Sound8]
forall a. a -> [a] -> [a]
: Sound8
z Sound8 -> [Sound8] -> [Sound8]
forall a. a -> [a] -> [a]
: [Sound8]
xs)
| Bool
otherwise = Sound8
x Sound8 -> [Sound8] -> [Sound8]
forall a. a -> [a] -> [a]
: [Sound8] -> [Sound8]
correctSomeW (Sound8
y Sound8 -> [Sound8] -> [Sound8]
forall a. a -> [a] -> [a]
: Sound8
z Sound8 -> [Sound8] -> [Sound8]
forall a. a -> [a] -> [a]
: [Sound8]
xs)
correctSomeW [Sound8]
zs = [Sound8]
zs
correctB :: FlowSound -> FlowSound
correctB :: [Sound8] -> [Sound8]
correctB ys :: [Sound8]
ys@(Sound8
x : [Sound8]
xs)
| ([Sound8] -> Int
forall a. [a] -> Int
length ([Sound8] -> Int) -> ([Sound8] -> [Sound8]) -> [Sound8] -> Int
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Sound8 -> Bool) -> [Sound8] -> [Sound8]
forall a. (a -> Bool) -> [a] -> [a]
filter (Sound8 -> Sound8 -> Bool
forall a. Eq a => a -> a -> Bool
== Sound8
100) ([Sound8] -> [Sound8])
-> ([Sound8] -> [Sound8]) -> [Sound8] -> [Sound8]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Int -> [Sound8] -> [Sound8]
takeFromFT2 Int
6 ([Sound8] -> Int) -> [Sound8] -> Int
forall a b. (a -> b) -> a -> b
$ [Sound8]
ys) Int -> Int -> Bool
forall a. Ord a => a -> a -> Bool
> Int
1 =
(Sound8 -> Sound8) -> [Sound8] -> [Sound8]
forall a b. (a -> b) -> [a] -> [b]
map (\Sound8
t -> if Sound8
t Sound8 -> Sound8 -> Bool
forall a. Ord a => a -> a -> Bool
>= Sound8
100 then Sound8
101 else Sound8
t) (Int -> [Sound8] -> [Sound8]
takeFromFT2 Int
6 [Sound8]
ys)
[Sound8] -> [Sound8] -> [Sound8]
forall a. Monoid a => a -> a -> a
`mappend` [Sound8] -> [Sound8]
correctB (Int -> [Sound8] -> [Sound8]
dropFromFT2 Int
6 [Sound8]
ys)
| Bool
otherwise = (if Sound8
x Sound8 -> Sound8 -> Bool
forall a. Ord a => a -> a -> Bool
> Sound8
100 then Sound8
101 else Sound8
x) Sound8 -> [Sound8] -> [Sound8]
forall a. a -> [a] -> [a]
: [Sound8] -> [Sound8]
correctB [Sound8]
xs
correctB [Sound8]
_ = []
linkFileNameI8 :: Sound8 -> Char
linkFileNameI8 :: Sound8 -> Char
linkFileNameI8 =
Char -> [(Sound8, Char)] -> Sound8 -> Char
forall a b. Ord a => b -> [(a, b)] -> a -> b
getBFstLSorted'
Char
'0'
( [ (Sound8
1, Char
'A')
, (Sound8
2, Char
'H')
, (Sound8
3, Char
'Q')
, (Sound8
4, Char
'W')
, (Sound8
5, Char
'K')
, (Sound8
6, Char
'e')
, (Sound8
7, Char
'd')
, (Sound8
8, Char
'G')
, (Sound8
10, Char
'I')
, (Sound8
15, Char
'B')
, (Sound8
17, Char
'E')
, (Sound8
19, Char
'f')
, (Sound8
21, Char
'D')
, (Sound8
23, Char
'F')
, (Sound8
25, Char
'J')
, (Sound8
27, Char
'L')
, (Sound8
28, Char
'N')
, (Sound8
30, Char
'O')
, (Sound8
32, Char
'P')
, (Sound8
34, Char
'S')
, (Sound8
36, Char
'C')
, (Sound8
38, Char
'Z')
, (Sound8
39, Char
'b')
, (Sound8
41, Char
'c')
, (Sound8
43, Char
'X')
, (Sound8
45, Char
'M')
, (Sound8
47, Char
'R')
, (Sound8
49, Char
'T')
, (Sound8
50, Char
'V')
, (Sound8
52, Char
'Y')
, (Sound8
54, Char
'U')
, (Sound8
60, Char
'0')
, (Sound8
61, Char
'0')
, (Sound8
66, Char
'a')
]
)
{-# INLINE linkFileNameI8 #-}