{-# LANGUAGE BangPatterns #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# OPTIONS_HADDOCK show-extensions #-}
module Aftovolio.Ukrainian.Common2 where
import CaseBi.Arr
import GHC.Arr (Array (..))
import GHC.Base
import GHC.List (repeat, zip)
import Text.Show (Show (..))
data Triple = Z | O | T
deriving (Triple -> Triple -> Bool
(Triple -> Triple -> Bool)
-> (Triple -> Triple -> Bool) -> Eq Triple
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: Triple -> Triple -> Bool
== :: Triple -> Triple -> Bool
$c/= :: Triple -> Triple -> Bool
/= :: Triple -> Triple -> Bool
Eq, Eq Triple
Eq Triple =>
(Triple -> Triple -> Ordering)
-> (Triple -> Triple -> Bool)
-> (Triple -> Triple -> Bool)
-> (Triple -> Triple -> Bool)
-> (Triple -> Triple -> Bool)
-> (Triple -> Triple -> Triple)
-> (Triple -> Triple -> Triple)
-> Ord Triple
Triple -> Triple -> Bool
Triple -> Triple -> Ordering
Triple -> Triple -> Triple
forall a.
Eq a =>
(a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
$ccompare :: Triple -> Triple -> Ordering
compare :: Triple -> Triple -> Ordering
$c< :: Triple -> Triple -> Bool
< :: Triple -> Triple -> Bool
$c<= :: Triple -> Triple -> Bool
<= :: Triple -> Triple -> Bool
$c> :: Triple -> Triple -> Bool
> :: Triple -> Triple -> Bool
$c>= :: Triple -> Triple -> Bool
>= :: Triple -> Triple -> Bool
$cmax :: Triple -> Triple -> Triple
max :: Triple -> Triple -> Triple
$cmin :: Triple -> Triple -> Triple
min :: Triple -> Triple -> Triple
Ord, Int -> Triple -> ShowS
[Triple] -> ShowS
Triple -> String
(Int -> Triple -> ShowS)
-> (Triple -> String) -> ([Triple] -> ShowS) -> Show Triple
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> Triple -> ShowS
showsPrec :: Int -> Triple -> ShowS
$cshow :: Triple -> String
show :: Triple -> String
$cshowList :: [Triple] -> ShowS
showList :: [Triple] -> ShowS
Show)
isUkrainianL :: Char -> Bool
isUkrainianL :: Char -> Bool
isUkrainianL Char
y
| (Char
y Char -> Char -> Bool
forall a. Ord a => a -> a -> Bool
>= Char
'\1070' Bool -> Bool -> Bool
&& Char
y Char -> Char -> Bool
forall a. Ord a => a -> a -> Bool
<= Char
'\1097') = Bool
True
| Bool
otherwise =
Bool -> [(Char, Bool)] -> Char -> Bool
forall a b. Ord a => b -> [(a, b)] -> a -> b
getBFstLSorted'
Bool
False
( (Char -> (Char, Bool)) -> String -> [(Char, Bool)]
forall a b. (a -> b) -> [a] -> [b]
map
(\Char
x -> (Char
x, Bool
True))
String
"'-\700\1028\1030\1031\1068\1100\1102\1103\1108\1110\1111\1168\1169\8217"
)
Char
y
isUkrainianLTup :: Array Int (Char, Bool) -> Char -> Bool
isUkrainianLTup :: Array Int (Char, Bool) -> Char -> Bool
isUkrainianLTup !Array Int (Char, Bool)
tup15 Char
y
| (Char
y Char -> Char -> Bool
forall a. Ord a => a -> a -> Bool
>= Char
'\1070' Bool -> Bool -> Bool
&& Char
y Char -> Char -> Bool
forall a. Ord a => a -> a -> Bool
<= Char
'\1097') = Bool
True
| Bool
otherwise = (Bool, Array Int (Char, Bool)) -> Char -> Bool
forall a b. Ord a => (b, Array Int (a, b)) -> a -> b
getBFst' (Bool
False, Array Int (Char, Bool)
tup15) Char
y
isConsNotJ :: Char -> Bool
isConsNotJ :: Char -> Bool
isConsNotJ =
Bool -> [(Char, Bool)] -> Char -> Bool
forall a b. Ord a => b -> [(a, b)] -> a -> b
getBFstLSorted'
Bool
False
( String -> [Bool] -> [(Char, Bool)]
forall a b. [a] -> [b] -> [(a, b)]
zip
String
"\1073\1074\1075\1076\1078\1079\1082\1083\1084\1085\1087\1088\1089\1090\1092\1093\1094\1095\1096\1097\1169"
(Bool -> [Bool]
forall a. a -> [a]
repeat Bool
True)
)
isConsNotJTup :: Array Int (Char, Bool) -> Char -> Bool
isConsNotJTup :: Array Int (Char, Bool) -> Char -> Bool
isConsNotJTup !Array Int (Char, Bool)
tup16 = (Bool, Array Int (Char, Bool)) -> Char -> Bool
forall a b. Ord a => (b, Array Int (a, b)) -> a -> b
getBFst' (Bool
False, Array Int (Char, Bool)
tup16)