{-# LANGUAGE BangPatterns #-}
module Languages.UniquenessPeriods.Vector.General.Debug (
maximumElBy
, uniqNPropertiesN
, uniqNPropertiesNAll
, uniqNProperties2GN
, maximumElByAll
, maximumElGBy
, uniquenessVariantsGN
, maximumElByVec
, maximumElByVecAll
, toFile
, printUniquenessG1
, printUniquenessG1List
, printUniquenessG1ListStr
, newLineEnding
) where
import Data.Print.Info
import Data.List (intersperse)
import System.IO
import qualified Data.Vector as V
import Languages.UniquenessPeriods.Vector.Auxiliary
import Languages.UniquenessPeriods.Vector.StrictV
import Languages.UniquenessPeriods.Vector.Data
maximumElBy ::
(Eq a, Ord b) => Int
-> V.Vector ([b] -> b)
-> UniqG2 a b
-> UniquenessG1 a b
maximumElBy :: Int -> Vector ([b] -> b) -> UniqG2 a b -> UniquenessG1 a b
maximumElBy Int
k Vector ([b] -> b)
vN UniqG2 a b
y
| Vector (UniquenessG1 a b) -> Bool
forall a. Vector a -> Bool
V.null (Vector (UniquenessG1 a b) -> Bool)
-> (UniqG2 a b -> Vector (UniquenessG1 a b)) -> UniqG2 a b -> Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ([UniquenessG1 a b], Vector (UniquenessG1 a b))
-> Vector (UniquenessG1 a b)
forall a b. (a, b) -> b
snd (([UniquenessG1 a b], Vector (UniquenessG1 a b))
-> Vector (UniquenessG1 a b))
-> (UniqG2 a b -> ([UniquenessG1 a b], Vector (UniquenessG1 a b)))
-> UniqG2 a b
-> Vector (UniquenessG1 a b)
forall b c a. (b -> c) -> (a -> b) -> a -> c
.UniqG2 a b -> ([UniquenessG1 a b], Vector (UniquenessG1 a b))
forall a b.
UniqG2 a b -> ([UniquenessG1 a b], Vector (UniquenessG1 a b))
get22 (UniqG2 a b -> Bool) -> UniqG2 a b -> Bool
forall a b. (a -> b) -> a -> b
$ UniqG2 a b
y = [Char] -> UniquenessG1 a b
forall a. HasCallStack => [Char] -> a
error [Char]
"Languages.UniquenessPeriods.Vector.General.Debug.maximumElBy: undefined for the empty second element in the tuple. "
| Int -> Int -> Ordering
forall a. Ord a => a -> a -> Ordering
compare Int
k (Vector ([b] -> b) -> Int
forall a. Vector a -> Int
V.length Vector ([b] -> b)
vN) Ordering -> Ordering -> Bool
forall a. Eq a => a -> a -> Bool
== Ordering
GT = [Char] -> UniquenessG1 a b
forall a. HasCallStack => [Char] -> a
error [Char]
"Languages.UniquenessPeriods.Vector.General.Debug.maximumElBy: undefined for that amount of norms. "
| Int -> Int -> Ordering
forall a. Ord a => a -> a -> Ordering
compare Int
k Int
0 Ordering -> Ordering -> Bool
forall a. Eq a => a -> a -> Bool
== Ordering
GT =
let !maxK :: UniquenessG1 a b
maxK = (UniquenessG1 a b -> UniquenessG1 a b -> Ordering)
-> Vector (UniquenessG1 a b) -> UniquenessG1 a b
forall a. (a -> a -> Ordering) -> Vector a -> a
V.maximumBy (\([b]
_,Vector b
vN0,[a]
_) ([b]
_,Vector b
vN1,[a]
_) -> b -> b -> Ordering
forall a. Ord a => a -> a -> Ordering
compare (Vector b -> Int -> b
forall a. Vector a -> Int -> a
V.unsafeIndex Vector b
vN0 (Int
k Int -> Int -> Int
forall a. Num a => a -> a -> a
- Int
1)) (Vector b -> Int -> b
forall a. Vector a -> Int -> a
V.unsafeIndex Vector b
vN1 (Int
k Int -> Int -> Int
forall a. Num a => a -> a -> a
- Int
1))) (Vector (UniquenessG1 a b) -> UniquenessG1 a b)
-> (UniqG2 a b -> Vector (UniquenessG1 a b))
-> UniqG2 a b
-> UniquenessG1 a b
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ([UniquenessG1 a b], Vector (UniquenessG1 a b))
-> Vector (UniquenessG1 a b)
forall a b. (a, b) -> b
snd (([UniquenessG1 a b], Vector (UniquenessG1 a b))
-> Vector (UniquenessG1 a b))
-> (UniqG2 a b -> ([UniquenessG1 a b], Vector (UniquenessG1 a b)))
-> UniqG2 a b
-> Vector (UniquenessG1 a b)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. UniqG2 a b -> ([UniquenessG1 a b], Vector (UniquenessG1 a b))
forall a b.
UniqG2 a b -> ([UniquenessG1 a b], Vector (UniquenessG1 a b))
get22 (UniqG2 a b -> UniquenessG1 a b) -> UniqG2 a b -> UniquenessG1 a b
forall a b. (a -> b) -> a -> b
$ UniqG2 a b
y
vK :: Vector (UniquenessG1 a b)
vK = (UniquenessG1 a b -> Bool)
-> Vector (UniquenessG1 a b) -> Vector (UniquenessG1 a b)
forall a. (a -> Bool) -> Vector a -> Vector a
V.filter (\([b]
_,Vector b
vN2,[a]
_) -> Vector b -> Int -> b
forall a. Vector a -> Int -> a
V.unsafeIndex Vector b
vN2 (Int
k Int -> Int -> Int
forall a. Num a => a -> a -> a
- Int
1) b -> b -> Bool
forall a. Eq a => a -> a -> Bool
== Vector b -> Int -> b
forall a. Vector a -> Int -> a
V.unsafeIndex (UniquenessG1 a b -> Vector b
forall a b c. (a, b, c) -> b
secondFrom3 UniquenessG1 a b
maxK) (Int
k Int -> Int -> Int
forall a. Num a => a -> a -> a
- Int
1)) (Vector (UniquenessG1 a b) -> Vector (UniquenessG1 a b))
-> (UniqG2 a b -> Vector (UniquenessG1 a b))
-> UniqG2 a b
-> Vector (UniquenessG1 a b)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ([UniquenessG1 a b], Vector (UniquenessG1 a b))
-> Vector (UniquenessG1 a b)
forall a b. (a, b) -> b
snd (([UniquenessG1 a b], Vector (UniquenessG1 a b))
-> Vector (UniquenessG1 a b))
-> (UniqG2 a b -> ([UniquenessG1 a b], Vector (UniquenessG1 a b)))
-> UniqG2 a b
-> Vector (UniquenessG1 a b)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. UniqG2 a b -> ([UniquenessG1 a b], Vector (UniquenessG1 a b))
forall a b.
UniqG2 a b -> ([UniquenessG1 a b], Vector (UniquenessG1 a b))
get22 (UniqG2 a b -> Vector (UniquenessG1 a b))
-> UniqG2 a b -> Vector (UniquenessG1 a b)
forall a b. (a -> b) -> a -> b
$ UniqG2 a b
y in
Int -> Vector ([b] -> b) -> UniqG2 a b -> UniquenessG1 a b
forall a b.
(Eq a, Ord b) =>
Int -> Vector ([b] -> b) -> UniqG2 a b -> UniquenessG1 a b
maximumElBy (Int
k Int -> Int -> Int
forall a. Num a => a -> a -> a
- Int
1) (Int -> Int -> Vector ([b] -> b) -> Vector ([b] -> b)
forall a. Int -> Int -> Vector a -> Vector a
V.unsafeSlice Int
0 (Int
k Int -> Int -> Int
forall a. Num a => a -> a -> a
- Int
1) Vector ([b] -> b)
vN) (([UniquenessG1 a b], Vector (UniquenessG1 a b)) -> UniqG2 a b
forall a b. ([a], b) -> UniquenessG2 a b
UL2 (([UniquenessG1 a b], Vector (UniquenessG1 a b))
-> [UniquenessG1 a b]
forall a b. (a, b) -> a
fst (([UniquenessG1 a b], Vector (UniquenessG1 a b))
-> [UniquenessG1 a b])
-> (UniqG2 a b -> ([UniquenessG1 a b], Vector (UniquenessG1 a b)))
-> UniqG2 a b
-> [UniquenessG1 a b]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. UniqG2 a b -> ([UniquenessG1 a b], Vector (UniquenessG1 a b))
forall a b.
UniqG2 a b -> ([UniquenessG1 a b], Vector (UniquenessG1 a b))
get22 (UniqG2 a b -> [UniquenessG1 a b])
-> UniqG2 a b -> [UniquenessG1 a b]
forall a b. (a -> b) -> a -> b
$ UniqG2 a b
y,Vector (UniquenessG1 a b)
vK))
| Bool
otherwise = (UniquenessG1 a b -> UniquenessG1 a b -> Ordering)
-> Vector (UniquenessG1 a b) -> UniquenessG1 a b
forall a. (a -> a -> Ordering) -> Vector a -> a
V.maximumBy (\([b]
_,Vector b
vN0,[a]
_) ([b]
_,Vector b
vN1,[a]
_) -> b -> b -> Ordering
forall a. Ord a => a -> a -> Ordering
compare (Vector b -> Int -> b
forall a. Vector a -> Int -> a
V.unsafeIndex Vector b
vN0 Int
0) (Vector b -> Int -> b
forall a. Vector a -> Int -> a
V.unsafeIndex Vector b
vN1 Int
0)) (Vector (UniquenessG1 a b) -> UniquenessG1 a b)
-> (UniqG2 a b -> Vector (UniquenessG1 a b))
-> UniqG2 a b
-> UniquenessG1 a b
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ([UniquenessG1 a b], Vector (UniquenessG1 a b))
-> Vector (UniquenessG1 a b)
forall a b. (a, b) -> b
snd (([UniquenessG1 a b], Vector (UniquenessG1 a b))
-> Vector (UniquenessG1 a b))
-> (UniqG2 a b -> ([UniquenessG1 a b], Vector (UniquenessG1 a b)))
-> UniqG2 a b
-> Vector (UniquenessG1 a b)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. UniqG2 a b -> ([UniquenessG1 a b], Vector (UniquenessG1 a b))
forall a b.
UniqG2 a b -> ([UniquenessG1 a b], Vector (UniquenessG1 a b))
get22 (UniqG2 a b -> UniquenessG1 a b) -> UniqG2 a b -> UniquenessG1 a b
forall a b. (a -> b) -> a -> b
$ UniqG2 a b
y
{-# INLINABLE maximumElBy #-}
toFile ::
FilePath
-> [String]
-> IO ()
toFile :: [Char] -> [[Char]] -> IO ()
toFile [Char]
file [[Char]]
xss = (([Char] -> IO ()) -> [[Char]] -> IO ()
forall (t :: * -> *) (m :: * -> *) a b.
(Foldable t, Monad m) =>
(a -> m b) -> t a -> m ()
mapM_ ([Char] -> [Char] -> IO ()
appendFile [Char]
file) ([[Char]] -> IO ()) -> ([[Char]] -> [[Char]]) -> [[Char]] -> IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [Char] -> [[Char]] -> [[Char]]
forall a. a -> [a] -> [a]
intersperse [Char]
newLineEnding ([[Char]] -> IO ()) -> [[Char]] -> IO ()
forall a b. (a -> b) -> a -> b
$ [[Char]]
xss) IO () -> IO () -> IO ()
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> [Char] -> [Char] -> IO ()
appendFile [Char]
file [Char]
newLineEnding
printUniquenessG1
:: (Show a, Show b) => Info2
-> UniquenessG1 a b
-> IO ()
printUniquenessG1 :: Info2 -> UniquenessG1 a b -> IO ()
printUniquenessG1 Info2
info UniquenessG1 a b
uni
| Info2 -> Bool
forall a b. InfoG a b -> Bool
isI1 Info2
info =
case (\(I1 Info
x) -> Info
x) Info2
info of
Info
A -> [Char] -> IO ()
putStr [Char]
""
Info
B -> ([Char] -> IO ()) -> [[Char]] -> IO ()
forall (t :: * -> *) (m :: * -> *) a b.
(Foldable t, Monad m) =>
(a -> m b) -> t a -> m ()
mapM_ [Char] -> IO ()
putStrLn [[a] -> [Char]
forall a. Show a => a -> [Char]
show ([a] -> [Char])
-> (UniquenessG1 a b -> [a]) -> UniquenessG1 a b -> [Char]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. UniquenessG1 a b -> [a]
forall a b c. (a, b, c) -> c
lastFrom3 (UniquenessG1 a b -> [Char]) -> UniquenessG1 a b -> [Char]
forall a b. (a -> b) -> a -> b
$ UniquenessG1 a b
uni]
Info
C -> ([Char] -> IO ()) -> [[Char]] -> IO ()
forall (t :: * -> *) (m :: * -> *) a b.
(Foldable t, Monad m) =>
(a -> m b) -> t a -> m ()
mapM_ [Char] -> IO ()
putStrLn [[b] -> [Char]
forall a. Show a => a -> [Char]
show ([b] -> [Char])
-> (UniquenessG1 a b -> [b]) -> UniquenessG1 a b -> [Char]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. UniquenessG1 a b -> [b]
forall a b c. (a, b, c) -> a
firstFrom3 (UniquenessG1 a b -> [Char]) -> UniquenessG1 a b -> [Char]
forall a b. (a -> b) -> a -> b
$ UniquenessG1 a b
uni]
Info
D -> ([Char] -> IO ()) -> [[Char]] -> IO ()
forall (t :: * -> *) (m :: * -> *) a b.
(Foldable t, Monad m) =>
(a -> m b) -> t a -> m ()
mapM_ [Char] -> IO ()
putStrLn [Vector b -> [Char]
forall a. Show a => a -> [Char]
show (Vector b -> [Char])
-> (UniquenessG1 a b -> Vector b) -> UniquenessG1 a b -> [Char]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. UniquenessG1 a b -> Vector b
forall a b c. (a, b, c) -> b
secondFrom3 (UniquenessG1 a b -> [Char]) -> UniquenessG1 a b -> [Char]
forall a b. (a -> b) -> a -> b
$ UniquenessG1 a b
uni]
Info
E -> ([Char] -> IO ()) -> [[Char]] -> IO ()
forall (t :: * -> *) (m :: * -> *) a b.
(Foldable t, Monad m) =>
(a -> m b) -> t a -> m ()
mapM_ [Char] -> IO ()
putStrLn [[a] -> [Char]
forall a. Show a => a -> [Char]
show ([a] -> [Char])
-> (UniquenessG1 a b -> [a]) -> UniquenessG1 a b -> [Char]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. UniquenessG1 a b -> [a]
forall a b c. (a, b, c) -> c
lastFrom3 (UniquenessG1 a b -> [Char]) -> UniquenessG1 a b -> [Char]
forall a b. (a -> b) -> a -> b
$ UniquenessG1 a b
uni, [b] -> [Char]
forall a. Show a => a -> [Char]
show ([b] -> [Char])
-> (UniquenessG1 a b -> [b]) -> UniquenessG1 a b -> [Char]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. UniquenessG1 a b -> [b]
forall a b c. (a, b, c) -> a
firstFrom3 (UniquenessG1 a b -> [Char]) -> UniquenessG1 a b -> [Char]
forall a b. (a -> b) -> a -> b
$ UniquenessG1 a b
uni]
Info
F -> ([Char] -> IO ()) -> [[Char]] -> IO ()
forall (t :: * -> *) (m :: * -> *) a b.
(Foldable t, Monad m) =>
(a -> m b) -> t a -> m ()
mapM_ [Char] -> IO ()
putStrLn [[a] -> [Char]
forall a. Show a => a -> [Char]
show ([a] -> [Char])
-> (UniquenessG1 a b -> [a]) -> UniquenessG1 a b -> [Char]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. UniquenessG1 a b -> [a]
forall a b c. (a, b, c) -> c
lastFrom3 (UniquenessG1 a b -> [Char]) -> UniquenessG1 a b -> [Char]
forall a b. (a -> b) -> a -> b
$ UniquenessG1 a b
uni, Vector b -> [Char]
forall a. Show a => a -> [Char]
show (Vector b -> [Char])
-> (UniquenessG1 a b -> Vector b) -> UniquenessG1 a b -> [Char]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. UniquenessG1 a b -> Vector b
forall a b c. (a, b, c) -> b
secondFrom3 (UniquenessG1 a b -> [Char]) -> UniquenessG1 a b -> [Char]
forall a b. (a -> b) -> a -> b
$ UniquenessG1 a b
uni]
Info
G -> ([Char] -> IO ()) -> [[Char]] -> IO ()
forall (t :: * -> *) (m :: * -> *) a b.
(Foldable t, Monad m) =>
(a -> m b) -> t a -> m ()
mapM_ [Char] -> IO ()
putStrLn [[b] -> [Char]
forall a. Show a => a -> [Char]
show ([b] -> [Char])
-> (UniquenessG1 a b -> [b]) -> UniquenessG1 a b -> [Char]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. UniquenessG1 a b -> [b]
forall a b c. (a, b, c) -> a
firstFrom3 (UniquenessG1 a b -> [Char]) -> UniquenessG1 a b -> [Char]
forall a b. (a -> b) -> a -> b
$ UniquenessG1 a b
uni, Vector b -> [Char]
forall a. Show a => a -> [Char]
show (Vector b -> [Char])
-> (UniquenessG1 a b -> Vector b) -> UniquenessG1 a b -> [Char]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. UniquenessG1 a b -> Vector b
forall a b c. (a, b, c) -> b
secondFrom3 (UniquenessG1 a b -> [Char]) -> UniquenessG1 a b -> [Char]
forall a b. (a -> b) -> a -> b
$ UniquenessG1 a b
uni]
Info
_ -> ([Char] -> IO ()) -> [[Char]] -> IO ()
forall (t :: * -> *) (m :: * -> *) a b.
(Foldable t, Monad m) =>
(a -> m b) -> t a -> m ()
mapM_ [Char] -> IO ()
putStrLn [[a] -> [Char]
forall a. Show a => a -> [Char]
show ([a] -> [Char])
-> (UniquenessG1 a b -> [a]) -> UniquenessG1 a b -> [Char]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. UniquenessG1 a b -> [a]
forall a b c. (a, b, c) -> c
lastFrom3 (UniquenessG1 a b -> [Char]) -> UniquenessG1 a b -> [Char]
forall a b. (a -> b) -> a -> b
$ UniquenessG1 a b
uni, [b] -> [Char]
forall a. Show a => a -> [Char]
show ([b] -> [Char])
-> (UniquenessG1 a b -> [b]) -> UniquenessG1 a b -> [Char]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. UniquenessG1 a b -> [b]
forall a b c. (a, b, c) -> a
firstFrom3 (UniquenessG1 a b -> [Char]) -> UniquenessG1 a b -> [Char]
forall a b. (a -> b) -> a -> b
$ UniquenessG1 a b
uni, Vector b -> [Char]
forall a. Show a => a -> [Char]
show(Vector b -> [Char])
-> (UniquenessG1 a b -> Vector b) -> UniquenessG1 a b -> [Char]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. UniquenessG1 a b -> Vector b
forall a b c. (a, b, c) -> b
secondFrom3 (UniquenessG1 a b -> [Char]) -> UniquenessG1 a b -> [Char]
forall a b. (a -> b) -> a -> b
$ UniquenessG1 a b
uni]
| Bool
otherwise =
case (\(I2 InfoFile
x) -> InfoFile
x) Info2
info of
Af [Char]
_ -> [Char] -> IO ()
putStr [Char]
""
Bf [Char]
xs -> [Char] -> [[Char]] -> IO ()
toFile [Char]
xs [[a] -> [Char]
forall a. Show a => a -> [Char]
show ([a] -> [Char])
-> (UniquenessG1 a b -> [a]) -> UniquenessG1 a b -> [Char]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. UniquenessG1 a b -> [a]
forall a b c. (a, b, c) -> c
lastFrom3 (UniquenessG1 a b -> [Char]) -> UniquenessG1 a b -> [Char]
forall a b. (a -> b) -> a -> b
$ UniquenessG1 a b
uni]
Cf [Char]
xs -> [Char] -> [[Char]] -> IO ()
toFile [Char]
xs [[b] -> [Char]
forall a. Show a => a -> [Char]
show ([b] -> [Char])
-> (UniquenessG1 a b -> [b]) -> UniquenessG1 a b -> [Char]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. UniquenessG1 a b -> [b]
forall a b c. (a, b, c) -> a
firstFrom3 (UniquenessG1 a b -> [Char]) -> UniquenessG1 a b -> [Char]
forall a b. (a -> b) -> a -> b
$ UniquenessG1 a b
uni]
Df [Char]
xs -> [Char] -> [[Char]] -> IO ()
toFile [Char]
xs [Vector b -> [Char]
forall a. Show a => a -> [Char]
show (Vector b -> [Char])
-> (UniquenessG1 a b -> Vector b) -> UniquenessG1 a b -> [Char]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. UniquenessG1 a b -> Vector b
forall a b c. (a, b, c) -> b
secondFrom3 (UniquenessG1 a b -> [Char]) -> UniquenessG1 a b -> [Char]
forall a b. (a -> b) -> a -> b
$ UniquenessG1 a b
uni]
Ef [Char]
xs -> [Char] -> [[Char]] -> IO ()
toFile [Char]
xs [[a] -> [Char]
forall a. Show a => a -> [Char]
show ([a] -> [Char])
-> (UniquenessG1 a b -> [a]) -> UniquenessG1 a b -> [Char]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. UniquenessG1 a b -> [a]
forall a b c. (a, b, c) -> c
lastFrom3 (UniquenessG1 a b -> [Char]) -> UniquenessG1 a b -> [Char]
forall a b. (a -> b) -> a -> b
$ UniquenessG1 a b
uni, [b] -> [Char]
forall a. Show a => a -> [Char]
show ([b] -> [Char])
-> (UniquenessG1 a b -> [b]) -> UniquenessG1 a b -> [Char]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. UniquenessG1 a b -> [b]
forall a b c. (a, b, c) -> a
firstFrom3 (UniquenessG1 a b -> [Char]) -> UniquenessG1 a b -> [Char]
forall a b. (a -> b) -> a -> b
$ UniquenessG1 a b
uni]
Ff [Char]
xs -> [Char] -> [[Char]] -> IO ()
toFile [Char]
xs [[a] -> [Char]
forall a. Show a => a -> [Char]
show ([a] -> [Char])
-> (UniquenessG1 a b -> [a]) -> UniquenessG1 a b -> [Char]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. UniquenessG1 a b -> [a]
forall a b c. (a, b, c) -> c
lastFrom3 (UniquenessG1 a b -> [Char]) -> UniquenessG1 a b -> [Char]
forall a b. (a -> b) -> a -> b
$ UniquenessG1 a b
uni, Vector b -> [Char]
forall a. Show a => a -> [Char]
show (Vector b -> [Char])
-> (UniquenessG1 a b -> Vector b) -> UniquenessG1 a b -> [Char]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. UniquenessG1 a b -> Vector b
forall a b c. (a, b, c) -> b
secondFrom3 (UniquenessG1 a b -> [Char]) -> UniquenessG1 a b -> [Char]
forall a b. (a -> b) -> a -> b
$ UniquenessG1 a b
uni]
Gf [Char]
xs -> [Char] -> [[Char]] -> IO ()
toFile [Char]
xs [[b] -> [Char]
forall a. Show a => a -> [Char]
show ([b] -> [Char])
-> (UniquenessG1 a b -> [b]) -> UniquenessG1 a b -> [Char]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. UniquenessG1 a b -> [b]
forall a b c. (a, b, c) -> a
firstFrom3 (UniquenessG1 a b -> [Char]) -> UniquenessG1 a b -> [Char]
forall a b. (a -> b) -> a -> b
$ UniquenessG1 a b
uni, Vector b -> [Char]
forall a. Show a => a -> [Char]
show (Vector b -> [Char])
-> (UniquenessG1 a b -> Vector b) -> UniquenessG1 a b -> [Char]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. UniquenessG1 a b -> Vector b
forall a b c. (a, b, c) -> b
secondFrom3 (UniquenessG1 a b -> [Char]) -> UniquenessG1 a b -> [Char]
forall a b. (a -> b) -> a -> b
$ UniquenessG1 a b
uni]
~(Hf [Char]
xs) -> [Char] -> [[Char]] -> IO ()
toFile [Char]
xs [[a] -> [Char]
forall a. Show a => a -> [Char]
show ([a] -> [Char])
-> (UniquenessG1 a b -> [a]) -> UniquenessG1 a b -> [Char]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. UniquenessG1 a b -> [a]
forall a b c. (a, b, c) -> c
lastFrom3 (UniquenessG1 a b -> [Char]) -> UniquenessG1 a b -> [Char]
forall a b. (a -> b) -> a -> b
$ UniquenessG1 a b
uni, [b] -> [Char]
forall a. Show a => a -> [Char]
show ([b] -> [Char])
-> (UniquenessG1 a b -> [b]) -> UniquenessG1 a b -> [Char]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. UniquenessG1 a b -> [b]
forall a b c. (a, b, c) -> a
firstFrom3 (UniquenessG1 a b -> [Char]) -> UniquenessG1 a b -> [Char]
forall a b. (a -> b) -> a -> b
$ UniquenessG1 a b
uni, Vector b -> [Char]
forall a. Show a => a -> [Char]
show(Vector b -> [Char])
-> (UniquenessG1 a b -> Vector b) -> UniquenessG1 a b -> [Char]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. UniquenessG1 a b -> Vector b
forall a b c. (a, b, c) -> b
secondFrom3 (UniquenessG1 a b -> [Char]) -> UniquenessG1 a b -> [Char]
forall a b. (a -> b) -> a -> b
$ UniquenessG1 a b
uni]
printUniquenessG1List
:: (Show a, Show b) => Info2
-> [UniquenessG1 a b]
-> IO ()
printUniquenessG1List :: Info2 -> [UniquenessG1 a b] -> IO ()
printUniquenessG1List Info2
info (UniquenessG1 a b
y:[UniquenessG1 a b]
ys)
| Info2 -> Bool
forall a b. InfoG a b -> Bool
isI1 Info2
info =
case (\(I1 Info
x) -> Info
x) Info2
info of
Info
A -> [Char] -> IO ()
putStr [Char]
""
Info
B -> ([Char] -> IO ()) -> [[Char]] -> IO ()
forall (t :: * -> *) (m :: * -> *) a b.
(Foldable t, Monad m) =>
(a -> m b) -> t a -> m ()
mapM_ [Char] -> IO ()
putStrLn ([[Char]] -> IO ())
-> ([UniquenessG1 a b] -> [[Char]]) -> [UniquenessG1 a b] -> IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (UniquenessG1 a b -> [Char]) -> [UniquenessG1 a b] -> [[Char]]
forall a b. (a -> b) -> [a] -> [b]
map ([a] -> [Char]
forall a. Show a => a -> [Char]
show ([a] -> [Char])
-> (UniquenessG1 a b -> [a]) -> UniquenessG1 a b -> [Char]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. UniquenessG1 a b -> [a]
forall a b c. (a, b, c) -> c
lastFrom3) ([UniquenessG1 a b] -> IO ()) -> [UniquenessG1 a b] -> IO ()
forall a b. (a -> b) -> a -> b
$ (UniquenessG1 a b
yUniquenessG1 a b -> [UniquenessG1 a b] -> [UniquenessG1 a b]
forall a. a -> [a] -> [a]
:[UniquenessG1 a b]
ys)
Info
C -> ([Char] -> IO ()) -> [[Char]] -> IO ()
forall (t :: * -> *) (m :: * -> *) a b.
(Foldable t, Monad m) =>
(a -> m b) -> t a -> m ()
mapM_ [Char] -> IO ()
putStrLn ([[Char]] -> IO ())
-> ([UniquenessG1 a b] -> [[Char]]) -> [UniquenessG1 a b] -> IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (UniquenessG1 a b -> [Char]) -> [UniquenessG1 a b] -> [[Char]]
forall a b. (a -> b) -> [a] -> [b]
map ([b] -> [Char]
forall a. Show a => a -> [Char]
show ([b] -> [Char])
-> (UniquenessG1 a b -> [b]) -> UniquenessG1 a b -> [Char]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. UniquenessG1 a b -> [b]
forall a b c. (a, b, c) -> a
firstFrom3) ([UniquenessG1 a b] -> IO ()) -> [UniquenessG1 a b] -> IO ()
forall a b. (a -> b) -> a -> b
$ (UniquenessG1 a b
yUniquenessG1 a b -> [UniquenessG1 a b] -> [UniquenessG1 a b]
forall a. a -> [a] -> [a]
:[UniquenessG1 a b]
ys)
Info
D -> ([Char] -> IO ()) -> [[Char]] -> IO ()
forall (t :: * -> *) (m :: * -> *) a b.
(Foldable t, Monad m) =>
(a -> m b) -> t a -> m ()
mapM_ [Char] -> IO ()
putStrLn ([[Char]] -> IO ())
-> ([UniquenessG1 a b] -> [[Char]]) -> [UniquenessG1 a b] -> IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (UniquenessG1 a b -> [Char]) -> [UniquenessG1 a b] -> [[Char]]
forall a b. (a -> b) -> [a] -> [b]
map (Vector b -> [Char]
forall a. Show a => a -> [Char]
show (Vector b -> [Char])
-> (UniquenessG1 a b -> Vector b) -> UniquenessG1 a b -> [Char]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. UniquenessG1 a b -> Vector b
forall a b c. (a, b, c) -> b
secondFrom3) ([UniquenessG1 a b] -> IO ()) -> [UniquenessG1 a b] -> IO ()
forall a b. (a -> b) -> a -> b
$ (UniquenessG1 a b
yUniquenessG1 a b -> [UniquenessG1 a b] -> [UniquenessG1 a b]
forall a. a -> [a] -> [a]
:[UniquenessG1 a b]
ys)
Info
E -> ([Char] -> IO ()
putStrLn ([Char] -> IO ())
-> (UniquenessG1 a b -> [Char]) -> UniquenessG1 a b -> IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [a] -> [Char]
forall a. Show a => a -> [Char]
show ([a] -> [Char])
-> (UniquenessG1 a b -> [a]) -> UniquenessG1 a b -> [Char]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. UniquenessG1 a b -> [a]
forall a b c. (a, b, c) -> c
lastFrom3 (UniquenessG1 a b -> IO ()) -> UniquenessG1 a b -> IO ()
forall a b. (a -> b) -> a -> b
$ UniquenessG1 a b
y) IO () -> IO () -> IO ()
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> ([Char] -> IO ()
putStrLn ([Char] -> IO ())
-> (UniquenessG1 a b -> [Char]) -> UniquenessG1 a b -> IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [b] -> [Char]
forall a. Show a => a -> [Char]
show ([b] -> [Char])
-> (UniquenessG1 a b -> [b]) -> UniquenessG1 a b -> [Char]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. UniquenessG1 a b -> [b]
forall a b c. (a, b, c) -> a
firstFrom3 (UniquenessG1 a b -> IO ()) -> UniquenessG1 a b -> IO ()
forall a b. (a -> b) -> a -> b
$ UniquenessG1 a b
y) IO () -> IO () -> IO ()
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> Info2 -> [UniquenessG1 a b] -> IO ()
forall a b.
(Show a, Show b) =>
Info2 -> [UniquenessG1 a b] -> IO ()
printUniquenessG1List Info2
info [UniquenessG1 a b]
ys
Info
F -> ([Char] -> IO ()
putStrLn ([Char] -> IO ())
-> (UniquenessG1 a b -> [Char]) -> UniquenessG1 a b -> IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [a] -> [Char]
forall a. Show a => a -> [Char]
show ([a] -> [Char])
-> (UniquenessG1 a b -> [a]) -> UniquenessG1 a b -> [Char]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. UniquenessG1 a b -> [a]
forall a b c. (a, b, c) -> c
lastFrom3 (UniquenessG1 a b -> IO ()) -> UniquenessG1 a b -> IO ()
forall a b. (a -> b) -> a -> b
$ UniquenessG1 a b
y) IO () -> IO () -> IO ()
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> ([Char] -> IO ()
putStrLn ([Char] -> IO ())
-> (UniquenessG1 a b -> [Char]) -> UniquenessG1 a b -> IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Vector b -> [Char]
forall a. Show a => a -> [Char]
show (Vector b -> [Char])
-> (UniquenessG1 a b -> Vector b) -> UniquenessG1 a b -> [Char]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. UniquenessG1 a b -> Vector b
forall a b c. (a, b, c) -> b
secondFrom3 (UniquenessG1 a b -> IO ()) -> UniquenessG1 a b -> IO ()
forall a b. (a -> b) -> a -> b
$ UniquenessG1 a b
y) IO () -> IO () -> IO ()
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> Info2 -> [UniquenessG1 a b] -> IO ()
forall a b.
(Show a, Show b) =>
Info2 -> [UniquenessG1 a b] -> IO ()
printUniquenessG1List Info2
info [UniquenessG1 a b]
ys
Info
G -> ([Char] -> IO ()
putStrLn ([Char] -> IO ())
-> (UniquenessG1 a b -> [Char]) -> UniquenessG1 a b -> IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [b] -> [Char]
forall a. Show a => a -> [Char]
show ([b] -> [Char])
-> (UniquenessG1 a b -> [b]) -> UniquenessG1 a b -> [Char]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. UniquenessG1 a b -> [b]
forall a b c. (a, b, c) -> a
firstFrom3 (UniquenessG1 a b -> IO ()) -> UniquenessG1 a b -> IO ()
forall a b. (a -> b) -> a -> b
$ UniquenessG1 a b
y) IO () -> IO () -> IO ()
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> ([Char] -> IO ()
putStrLn ([Char] -> IO ())
-> (UniquenessG1 a b -> [Char]) -> UniquenessG1 a b -> IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Vector b -> [Char]
forall a. Show a => a -> [Char]
show (Vector b -> [Char])
-> (UniquenessG1 a b -> Vector b) -> UniquenessG1 a b -> [Char]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. UniquenessG1 a b -> Vector b
forall a b c. (a, b, c) -> b
secondFrom3 (UniquenessG1 a b -> IO ()) -> UniquenessG1 a b -> IO ()
forall a b. (a -> b) -> a -> b
$ UniquenessG1 a b
y) IO () -> IO () -> IO ()
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> Info2 -> [UniquenessG1 a b] -> IO ()
forall a b.
(Show a, Show b) =>
Info2 -> [UniquenessG1 a b] -> IO ()
printUniquenessG1List Info2
info [UniquenessG1 a b]
ys
Info
_ -> ([Char] -> IO ()
putStrLn ([Char] -> IO ())
-> (UniquenessG1 a b -> [Char]) -> UniquenessG1 a b -> IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [a] -> [Char]
forall a. Show a => a -> [Char]
show ([a] -> [Char])
-> (UniquenessG1 a b -> [a]) -> UniquenessG1 a b -> [Char]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. UniquenessG1 a b -> [a]
forall a b c. (a, b, c) -> c
lastFrom3 (UniquenessG1 a b -> IO ()) -> UniquenessG1 a b -> IO ()
forall a b. (a -> b) -> a -> b
$ UniquenessG1 a b
y) IO () -> IO () -> IO ()
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> ([Char] -> IO ()
putStrLn ([Char] -> IO ())
-> (UniquenessG1 a b -> [Char]) -> UniquenessG1 a b -> IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [b] -> [Char]
forall a. Show a => a -> [Char]
show ([b] -> [Char])
-> (UniquenessG1 a b -> [b]) -> UniquenessG1 a b -> [Char]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. UniquenessG1 a b -> [b]
forall a b c. (a, b, c) -> a
firstFrom3 (UniquenessG1 a b -> IO ()) -> UniquenessG1 a b -> IO ()
forall a b. (a -> b) -> a -> b
$ UniquenessG1 a b
y) IO () -> IO () -> IO ()
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> ([Char] -> IO ()
putStrLn ([Char] -> IO ())
-> (UniquenessG1 a b -> [Char]) -> UniquenessG1 a b -> IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Vector b -> [Char]
forall a. Show a => a -> [Char]
show(Vector b -> [Char])
-> (UniquenessG1 a b -> Vector b) -> UniquenessG1 a b -> [Char]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. UniquenessG1 a b -> Vector b
forall a b c. (a, b, c) -> b
secondFrom3 (UniquenessG1 a b -> IO ()) -> UniquenessG1 a b -> IO ()
forall a b. (a -> b) -> a -> b
$ UniquenessG1 a b
y) IO () -> IO () -> IO ()
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> Info2 -> [UniquenessG1 a b] -> IO ()
forall a b.
(Show a, Show b) =>
Info2 -> [UniquenessG1 a b] -> IO ()
printUniquenessG1List Info2
info [UniquenessG1 a b]
ys
| Bool
otherwise =
case (\(I2 InfoFile
x) -> InfoFile
x) Info2
info of
Af [Char]
_ -> [Char] -> IO ()
putStr [Char]
""
Bf [Char]
xs -> [Char] -> [[Char]] -> IO ()
toFile [Char]
xs ([[Char]] -> IO ())
-> ([UniquenessG1 a b] -> [[Char]]) -> [UniquenessG1 a b] -> IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (UniquenessG1 a b -> [Char]) -> [UniquenessG1 a b] -> [[Char]]
forall a b. (a -> b) -> [a] -> [b]
map ([a] -> [Char]
forall a. Show a => a -> [Char]
show ([a] -> [Char])
-> (UniquenessG1 a b -> [a]) -> UniquenessG1 a b -> [Char]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. UniquenessG1 a b -> [a]
forall a b c. (a, b, c) -> c
lastFrom3) ([UniquenessG1 a b] -> IO ()) -> [UniquenessG1 a b] -> IO ()
forall a b. (a -> b) -> a -> b
$ (UniquenessG1 a b
yUniquenessG1 a b -> [UniquenessG1 a b] -> [UniquenessG1 a b]
forall a. a -> [a] -> [a]
:[UniquenessG1 a b]
ys)
Cf [Char]
xs -> [Char] -> [[Char]] -> IO ()
toFile [Char]
xs ([[Char]] -> IO ())
-> ([UniquenessG1 a b] -> [[Char]]) -> [UniquenessG1 a b] -> IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (UniquenessG1 a b -> [Char]) -> [UniquenessG1 a b] -> [[Char]]
forall a b. (a -> b) -> [a] -> [b]
map ([b] -> [Char]
forall a. Show a => a -> [Char]
show ([b] -> [Char])
-> (UniquenessG1 a b -> [b]) -> UniquenessG1 a b -> [Char]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. UniquenessG1 a b -> [b]
forall a b c. (a, b, c) -> a
firstFrom3) ([UniquenessG1 a b] -> IO ()) -> [UniquenessG1 a b] -> IO ()
forall a b. (a -> b) -> a -> b
$ (UniquenessG1 a b
yUniquenessG1 a b -> [UniquenessG1 a b] -> [UniquenessG1 a b]
forall a. a -> [a] -> [a]
:[UniquenessG1 a b]
ys)
Df [Char]
xs -> [Char] -> [[Char]] -> IO ()
toFile [Char]
xs ([[Char]] -> IO ())
-> ([UniquenessG1 a b] -> [[Char]]) -> [UniquenessG1 a b] -> IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (UniquenessG1 a b -> [Char]) -> [UniquenessG1 a b] -> [[Char]]
forall a b. (a -> b) -> [a] -> [b]
map (Vector b -> [Char]
forall a. Show a => a -> [Char]
show (Vector b -> [Char])
-> (UniquenessG1 a b -> Vector b) -> UniquenessG1 a b -> [Char]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. UniquenessG1 a b -> Vector b
forall a b c. (a, b, c) -> b
secondFrom3) ([UniquenessG1 a b] -> IO ()) -> [UniquenessG1 a b] -> IO ()
forall a b. (a -> b) -> a -> b
$ (UniquenessG1 a b
yUniquenessG1 a b -> [UniquenessG1 a b] -> [UniquenessG1 a b]
forall a. a -> [a] -> [a]
:[UniquenessG1 a b]
ys)
Ef [Char]
xs -> [Char] -> [[Char]] -> IO ()
toFile [Char]
xs ([[Char]] -> IO ())
-> ([UniquenessG1 a b] -> [[Char]]) -> [UniquenessG1 a b] -> IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (UniquenessG1 a b -> [Char]) -> [UniquenessG1 a b] -> [[Char]]
forall a b. (a -> b) -> [a] -> [b]
map (\UniquenessG1 a b
t -> ([a] -> [Char]
forall a. Show a => a -> [Char]
show (UniquenessG1 a b -> [a]
forall a b c. (a, b, c) -> c
lastFrom3 UniquenessG1 a b
t) [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char]
newLineEnding [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [b] -> [Char]
forall a. Show a => a -> [Char]
show (UniquenessG1 a b -> [b]
forall a b c. (a, b, c) -> a
firstFrom3 UniquenessG1 a b
t))) ([UniquenessG1 a b] -> IO ()) -> [UniquenessG1 a b] -> IO ()
forall a b. (a -> b) -> a -> b
$ [UniquenessG1 a b]
ys
Ff [Char]
xs -> [Char] -> [[Char]] -> IO ()
toFile [Char]
xs ([[Char]] -> IO ())
-> ([UniquenessG1 a b] -> [[Char]]) -> [UniquenessG1 a b] -> IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (UniquenessG1 a b -> [Char]) -> [UniquenessG1 a b] -> [[Char]]
forall a b. (a -> b) -> [a] -> [b]
map (\UniquenessG1 a b
t -> ([a] -> [Char]
forall a. Show a => a -> [Char]
show (UniquenessG1 a b -> [a]
forall a b c. (a, b, c) -> c
lastFrom3 UniquenessG1 a b
t) [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char]
newLineEnding [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ Vector b -> [Char]
forall a. Show a => a -> [Char]
show (UniquenessG1 a b -> Vector b
forall a b c. (a, b, c) -> b
secondFrom3 UniquenessG1 a b
t))) ([UniquenessG1 a b] -> IO ()) -> [UniquenessG1 a b] -> IO ()
forall a b. (a -> b) -> a -> b
$ [UniquenessG1 a b]
ys
Gf [Char]
xs -> [Char] -> [[Char]] -> IO ()
toFile [Char]
xs ([[Char]] -> IO ())
-> ([UniquenessG1 a b] -> [[Char]]) -> [UniquenessG1 a b] -> IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (UniquenessG1 a b -> [Char]) -> [UniquenessG1 a b] -> [[Char]]
forall a b. (a -> b) -> [a] -> [b]
map (\UniquenessG1 a b
t -> ([b] -> [Char]
forall a. Show a => a -> [Char]
show (UniquenessG1 a b -> [b]
forall a b c. (a, b, c) -> a
firstFrom3 UniquenessG1 a b
t) [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char]
newLineEnding [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ Vector b -> [Char]
forall a. Show a => a -> [Char]
show (UniquenessG1 a b -> Vector b
forall a b c. (a, b, c) -> b
secondFrom3 UniquenessG1 a b
t))) ([UniquenessG1 a b] -> IO ()) -> [UniquenessG1 a b] -> IO ()
forall a b. (a -> b) -> a -> b
$ [UniquenessG1 a b]
ys
~(Hf [Char]
xs) -> [Char] -> [[Char]] -> IO ()
toFile [Char]
xs ([[Char]] -> IO ())
-> ([UniquenessG1 a b] -> [[Char]]) -> [UniquenessG1 a b] -> IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (UniquenessG1 a b -> [Char]) -> [UniquenessG1 a b] -> [[Char]]
forall a b. (a -> b) -> [a] -> [b]
map (\UniquenessG1 a b
t -> ([a] -> [Char]
forall a. Show a => a -> [Char]
show (UniquenessG1 a b -> [a]
forall a b c. (a, b, c) -> c
lastFrom3 UniquenessG1 a b
t) [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char]
newLineEnding [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [b] -> [Char]
forall a. Show a => a -> [Char]
show (UniquenessG1 a b -> [b]
forall a b c. (a, b, c) -> a
firstFrom3 UniquenessG1 a b
t) [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char]
newLineEnding [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ Vector b -> [Char]
forall a. Show a => a -> [Char]
show (UniquenessG1 a b -> Vector b
forall a b c. (a, b, c) -> b
secondFrom3 UniquenessG1 a b
t))) ([UniquenessG1 a b] -> IO ()) -> [UniquenessG1 a b] -> IO ()
forall a b. (a -> b) -> a -> b
$ [UniquenessG1 a b]
ys
printUniquenessG1List Info2
_ [] = () -> IO ()
forall (m :: * -> *) a. Monad m => a -> m a
return ()
printUniquenessG1ListStr
:: (Show b) => Info2
-> [UniquenessG1 Char b]
-> IO ()
printUniquenessG1ListStr :: Info2 -> [UniquenessG1 Char b] -> IO ()
printUniquenessG1ListStr Info2
info (UniquenessG1 Char b
y:[UniquenessG1 Char b]
ys)
| Info2 -> Bool
forall a b. InfoG a b -> Bool
isI1 Info2
info =
case (\(I1 Info
x) -> Info
x) Info2
info of
Info
A -> [Char] -> IO ()
putStr [Char]
""
Info
B -> ([Char] -> IO ()) -> [[Char]] -> IO ()
forall (t :: * -> *) (m :: * -> *) a b.
(Foldable t, Monad m) =>
(a -> m b) -> t a -> m ()
mapM_ [Char] -> IO ()
putStrLn ([[Char]] -> IO ())
-> ([UniquenessG1 Char b] -> [[Char]])
-> [UniquenessG1 Char b]
-> IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (UniquenessG1 Char b -> [Char])
-> [UniquenessG1 Char b] -> [[Char]]
forall a b. (a -> b) -> [a] -> [b]
map UniquenessG1 Char b -> [Char]
forall a b c. (a, b, c) -> c
lastFrom3 ([UniquenessG1 Char b] -> IO ()) -> [UniquenessG1 Char b] -> IO ()
forall a b. (a -> b) -> a -> b
$ (UniquenessG1 Char b
yUniquenessG1 Char b
-> [UniquenessG1 Char b] -> [UniquenessG1 Char b]
forall a. a -> [a] -> [a]
:[UniquenessG1 Char b]
ys)
Info
C -> ([Char] -> IO ()) -> [[Char]] -> IO ()
forall (t :: * -> *) (m :: * -> *) a b.
(Foldable t, Monad m) =>
(a -> m b) -> t a -> m ()
mapM_ [Char] -> IO ()
putStrLn ([[Char]] -> IO ())
-> ([UniquenessG1 Char b] -> [[Char]])
-> [UniquenessG1 Char b]
-> IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (UniquenessG1 Char b -> [Char])
-> [UniquenessG1 Char b] -> [[Char]]
forall a b. (a -> b) -> [a] -> [b]
map ([b] -> [Char]
forall a. Show a => a -> [Char]
show ([b] -> [Char])
-> (UniquenessG1 Char b -> [b]) -> UniquenessG1 Char b -> [Char]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. UniquenessG1 Char b -> [b]
forall a b c. (a, b, c) -> a
firstFrom3) ([UniquenessG1 Char b] -> IO ()) -> [UniquenessG1 Char b] -> IO ()
forall a b. (a -> b) -> a -> b
$ (UniquenessG1 Char b
yUniquenessG1 Char b
-> [UniquenessG1 Char b] -> [UniquenessG1 Char b]
forall a. a -> [a] -> [a]
:[UniquenessG1 Char b]
ys)
Info
D -> ([Char] -> IO ()) -> [[Char]] -> IO ()
forall (t :: * -> *) (m :: * -> *) a b.
(Foldable t, Monad m) =>
(a -> m b) -> t a -> m ()
mapM_ [Char] -> IO ()
putStrLn ([[Char]] -> IO ())
-> ([UniquenessG1 Char b] -> [[Char]])
-> [UniquenessG1 Char b]
-> IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (UniquenessG1 Char b -> [Char])
-> [UniquenessG1 Char b] -> [[Char]]
forall a b. (a -> b) -> [a] -> [b]
map (Vector b -> [Char]
forall a. Show a => a -> [Char]
show (Vector b -> [Char])
-> (UniquenessG1 Char b -> Vector b)
-> UniquenessG1 Char b
-> [Char]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. UniquenessG1 Char b -> Vector b
forall a b c. (a, b, c) -> b
secondFrom3) ([UniquenessG1 Char b] -> IO ()) -> [UniquenessG1 Char b] -> IO ()
forall a b. (a -> b) -> a -> b
$ (UniquenessG1 Char b
yUniquenessG1 Char b
-> [UniquenessG1 Char b] -> [UniquenessG1 Char b]
forall a. a -> [a] -> [a]
:[UniquenessG1 Char b]
ys)
Info
E -> ([Char] -> IO ()
putStrLn ([Char] -> IO ())
-> (UniquenessG1 Char b -> [Char]) -> UniquenessG1 Char b -> IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. UniquenessG1 Char b -> [Char]
forall a b c. (a, b, c) -> c
lastFrom3 (UniquenessG1 Char b -> IO ()) -> UniquenessG1 Char b -> IO ()
forall a b. (a -> b) -> a -> b
$ UniquenessG1 Char b
y) IO () -> IO () -> IO ()
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> ([Char] -> IO ()
putStrLn ([Char] -> IO ())
-> (UniquenessG1 Char b -> [Char]) -> UniquenessG1 Char b -> IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [b] -> [Char]
forall a. Show a => a -> [Char]
show ([b] -> [Char])
-> (UniquenessG1 Char b -> [b]) -> UniquenessG1 Char b -> [Char]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. UniquenessG1 Char b -> [b]
forall a b c. (a, b, c) -> a
firstFrom3 (UniquenessG1 Char b -> IO ()) -> UniquenessG1 Char b -> IO ()
forall a b. (a -> b) -> a -> b
$ UniquenessG1 Char b
y) IO () -> IO () -> IO ()
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> Info2 -> [UniquenessG1 Char b] -> IO ()
forall b. Show b => Info2 -> [UniquenessG1 Char b] -> IO ()
printUniquenessG1ListStr Info2
info [UniquenessG1 Char b]
ys
Info
F -> ([Char] -> IO ()
putStrLn ([Char] -> IO ())
-> (UniquenessG1 Char b -> [Char]) -> UniquenessG1 Char b -> IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. UniquenessG1 Char b -> [Char]
forall a b c. (a, b, c) -> c
lastFrom3 (UniquenessG1 Char b -> IO ()) -> UniquenessG1 Char b -> IO ()
forall a b. (a -> b) -> a -> b
$ UniquenessG1 Char b
y) IO () -> IO () -> IO ()
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> ([Char] -> IO ()
putStrLn ([Char] -> IO ())
-> (UniquenessG1 Char b -> [Char]) -> UniquenessG1 Char b -> IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Vector b -> [Char]
forall a. Show a => a -> [Char]
show (Vector b -> [Char])
-> (UniquenessG1 Char b -> Vector b)
-> UniquenessG1 Char b
-> [Char]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. UniquenessG1 Char b -> Vector b
forall a b c. (a, b, c) -> b
secondFrom3 (UniquenessG1 Char b -> IO ()) -> UniquenessG1 Char b -> IO ()
forall a b. (a -> b) -> a -> b
$ UniquenessG1 Char b
y) IO () -> IO () -> IO ()
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> Info2 -> [UniquenessG1 Char b] -> IO ()
forall b. Show b => Info2 -> [UniquenessG1 Char b] -> IO ()
printUniquenessG1ListStr Info2
info [UniquenessG1 Char b]
ys
Info
G -> ([Char] -> IO ()
putStrLn ([Char] -> IO ())
-> (UniquenessG1 Char b -> [Char]) -> UniquenessG1 Char b -> IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [b] -> [Char]
forall a. Show a => a -> [Char]
show ([b] -> [Char])
-> (UniquenessG1 Char b -> [b]) -> UniquenessG1 Char b -> [Char]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. UniquenessG1 Char b -> [b]
forall a b c. (a, b, c) -> a
firstFrom3 (UniquenessG1 Char b -> IO ()) -> UniquenessG1 Char b -> IO ()
forall a b. (a -> b) -> a -> b
$ UniquenessG1 Char b
y) IO () -> IO () -> IO ()
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> ([Char] -> IO ()
putStrLn ([Char] -> IO ())
-> (UniquenessG1 Char b -> [Char]) -> UniquenessG1 Char b -> IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Vector b -> [Char]
forall a. Show a => a -> [Char]
show (Vector b -> [Char])
-> (UniquenessG1 Char b -> Vector b)
-> UniquenessG1 Char b
-> [Char]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. UniquenessG1 Char b -> Vector b
forall a b c. (a, b, c) -> b
secondFrom3 (UniquenessG1 Char b -> IO ()) -> UniquenessG1 Char b -> IO ()
forall a b. (a -> b) -> a -> b
$ UniquenessG1 Char b
y) IO () -> IO () -> IO ()
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> Info2 -> [UniquenessG1 Char b] -> IO ()
forall b. Show b => Info2 -> [UniquenessG1 Char b] -> IO ()
printUniquenessG1ListStr Info2
info [UniquenessG1 Char b]
ys
Info
_ -> ([Char] -> IO ()
putStrLn ([Char] -> IO ())
-> (UniquenessG1 Char b -> [Char]) -> UniquenessG1 Char b -> IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. UniquenessG1 Char b -> [Char]
forall a b c. (a, b, c) -> c
lastFrom3 (UniquenessG1 Char b -> IO ()) -> UniquenessG1 Char b -> IO ()
forall a b. (a -> b) -> a -> b
$ UniquenessG1 Char b
y) IO () -> IO () -> IO ()
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> ([Char] -> IO ()
putStrLn ([Char] -> IO ())
-> (UniquenessG1 Char b -> [Char]) -> UniquenessG1 Char b -> IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [b] -> [Char]
forall a. Show a => a -> [Char]
show ([b] -> [Char])
-> (UniquenessG1 Char b -> [b]) -> UniquenessG1 Char b -> [Char]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. UniquenessG1 Char b -> [b]
forall a b c. (a, b, c) -> a
firstFrom3 (UniquenessG1 Char b -> IO ()) -> UniquenessG1 Char b -> IO ()
forall a b. (a -> b) -> a -> b
$ UniquenessG1 Char b
y) IO () -> IO () -> IO ()
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> ([Char] -> IO ()
putStrLn ([Char] -> IO ())
-> (UniquenessG1 Char b -> [Char]) -> UniquenessG1 Char b -> IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Vector b -> [Char]
forall a. Show a => a -> [Char]
show(Vector b -> [Char])
-> (UniquenessG1 Char b -> Vector b)
-> UniquenessG1 Char b
-> [Char]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. UniquenessG1 Char b -> Vector b
forall a b c. (a, b, c) -> b
secondFrom3 (UniquenessG1 Char b -> IO ()) -> UniquenessG1 Char b -> IO ()
forall a b. (a -> b) -> a -> b
$ UniquenessG1 Char b
y) IO () -> IO () -> IO ()
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> Info2 -> [UniquenessG1 Char b] -> IO ()
forall b. Show b => Info2 -> [UniquenessG1 Char b] -> IO ()
printUniquenessG1ListStr Info2
info [UniquenessG1 Char b]
ys
| Bool
otherwise =
case (\(I2 InfoFile
x) -> InfoFile
x) Info2
info of
Af [Char]
_ -> [Char] -> IO ()
putStr [Char]
""
Bf [Char]
xs -> [Char] -> [[Char]] -> IO ()
toFile [Char]
xs ([[Char]] -> IO ())
-> ([UniquenessG1 Char b] -> [[Char]])
-> [UniquenessG1 Char b]
-> IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (UniquenessG1 Char b -> [Char])
-> [UniquenessG1 Char b] -> [[Char]]
forall a b. (a -> b) -> [a] -> [b]
map UniquenessG1 Char b -> [Char]
forall a b c. (a, b, c) -> c
lastFrom3 ([UniquenessG1 Char b] -> IO ()) -> [UniquenessG1 Char b] -> IO ()
forall a b. (a -> b) -> a -> b
$ (UniquenessG1 Char b
yUniquenessG1 Char b
-> [UniquenessG1 Char b] -> [UniquenessG1 Char b]
forall a. a -> [a] -> [a]
:[UniquenessG1 Char b]
ys)
Cf [Char]
xs -> [Char] -> [[Char]] -> IO ()
toFile [Char]
xs ([[Char]] -> IO ())
-> ([UniquenessG1 Char b] -> [[Char]])
-> [UniquenessG1 Char b]
-> IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (UniquenessG1 Char b -> [Char])
-> [UniquenessG1 Char b] -> [[Char]]
forall a b. (a -> b) -> [a] -> [b]
map ([b] -> [Char]
forall a. Show a => a -> [Char]
show ([b] -> [Char])
-> (UniquenessG1 Char b -> [b]) -> UniquenessG1 Char b -> [Char]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. UniquenessG1 Char b -> [b]
forall a b c. (a, b, c) -> a
firstFrom3) ([UniquenessG1 Char b] -> IO ()) -> [UniquenessG1 Char b] -> IO ()
forall a b. (a -> b) -> a -> b
$ (UniquenessG1 Char b
yUniquenessG1 Char b
-> [UniquenessG1 Char b] -> [UniquenessG1 Char b]
forall a. a -> [a] -> [a]
:[UniquenessG1 Char b]
ys)
Df [Char]
xs -> [Char] -> [[Char]] -> IO ()
toFile [Char]
xs ([[Char]] -> IO ())
-> ([UniquenessG1 Char b] -> [[Char]])
-> [UniquenessG1 Char b]
-> IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (UniquenessG1 Char b -> [Char])
-> [UniquenessG1 Char b] -> [[Char]]
forall a b. (a -> b) -> [a] -> [b]
map (Vector b -> [Char]
forall a. Show a => a -> [Char]
show (Vector b -> [Char])
-> (UniquenessG1 Char b -> Vector b)
-> UniquenessG1 Char b
-> [Char]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. UniquenessG1 Char b -> Vector b
forall a b c. (a, b, c) -> b
secondFrom3) ([UniquenessG1 Char b] -> IO ()) -> [UniquenessG1 Char b] -> IO ()
forall a b. (a -> b) -> a -> b
$ (UniquenessG1 Char b
yUniquenessG1 Char b
-> [UniquenessG1 Char b] -> [UniquenessG1 Char b]
forall a. a -> [a] -> [a]
:[UniquenessG1 Char b]
ys)
Ef [Char]
xs -> [Char] -> [[Char]] -> IO ()
toFile [Char]
xs ([[Char]] -> IO ())
-> ([UniquenessG1 Char b] -> [[Char]])
-> [UniquenessG1 Char b]
-> IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (UniquenessG1 Char b -> [Char])
-> [UniquenessG1 Char b] -> [[Char]]
forall a b. (a -> b) -> [a] -> [b]
map (\UniquenessG1 Char b
t -> (UniquenessG1 Char b -> [Char]
forall a b c. (a, b, c) -> c
lastFrom3 UniquenessG1 Char b
t [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char]
newLineEnding [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [b] -> [Char]
forall a. Show a => a -> [Char]
show (UniquenessG1 Char b -> [b]
forall a b c. (a, b, c) -> a
firstFrom3 UniquenessG1 Char b
t))) ([UniquenessG1 Char b] -> IO ()) -> [UniquenessG1 Char b] -> IO ()
forall a b. (a -> b) -> a -> b
$ [UniquenessG1 Char b]
ys
Ff [Char]
xs -> [Char] -> [[Char]] -> IO ()
toFile [Char]
xs ([[Char]] -> IO ())
-> ([UniquenessG1 Char b] -> [[Char]])
-> [UniquenessG1 Char b]
-> IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (UniquenessG1 Char b -> [Char])
-> [UniquenessG1 Char b] -> [[Char]]
forall a b. (a -> b) -> [a] -> [b]
map (\UniquenessG1 Char b
t -> (UniquenessG1 Char b -> [Char]
forall a b c. (a, b, c) -> c
lastFrom3 UniquenessG1 Char b
t [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char]
newLineEnding [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ Vector b -> [Char]
forall a. Show a => a -> [Char]
show (UniquenessG1 Char b -> Vector b
forall a b c. (a, b, c) -> b
secondFrom3 UniquenessG1 Char b
t))) ([UniquenessG1 Char b] -> IO ()) -> [UniquenessG1 Char b] -> IO ()
forall a b. (a -> b) -> a -> b
$ [UniquenessG1 Char b]
ys
Gf [Char]
xs -> [Char] -> [[Char]] -> IO ()
toFile [Char]
xs ([[Char]] -> IO ())
-> ([UniquenessG1 Char b] -> [[Char]])
-> [UniquenessG1 Char b]
-> IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (UniquenessG1 Char b -> [Char])
-> [UniquenessG1 Char b] -> [[Char]]
forall a b. (a -> b) -> [a] -> [b]
map (\UniquenessG1 Char b
t -> ([b] -> [Char]
forall a. Show a => a -> [Char]
show (UniquenessG1 Char b -> [b]
forall a b c. (a, b, c) -> a
firstFrom3 UniquenessG1 Char b
t) [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char]
newLineEnding [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ Vector b -> [Char]
forall a. Show a => a -> [Char]
show (UniquenessG1 Char b -> Vector b
forall a b c. (a, b, c) -> b
secondFrom3 UniquenessG1 Char b
t))) ([UniquenessG1 Char b] -> IO ()) -> [UniquenessG1 Char b] -> IO ()
forall a b. (a -> b) -> a -> b
$ [UniquenessG1 Char b]
ys
~(Hf [Char]
xs) -> [Char] -> [[Char]] -> IO ()
toFile [Char]
xs ([[Char]] -> IO ())
-> ([UniquenessG1 Char b] -> [[Char]])
-> [UniquenessG1 Char b]
-> IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (UniquenessG1 Char b -> [Char])
-> [UniquenessG1 Char b] -> [[Char]]
forall a b. (a -> b) -> [a] -> [b]
map (\UniquenessG1 Char b
t -> (UniquenessG1 Char b -> [Char]
forall a b c. (a, b, c) -> c
lastFrom3 UniquenessG1 Char b
t [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char]
newLineEnding [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [b] -> [Char]
forall a. Show a => a -> [Char]
show (UniquenessG1 Char b -> [b]
forall a b c. (a, b, c) -> a
firstFrom3 UniquenessG1 Char b
t) [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char]
newLineEnding [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ Vector b -> [Char]
forall a. Show a => a -> [Char]
show (UniquenessG1 Char b -> Vector b
forall a b c. (a, b, c) -> b
secondFrom3 UniquenessG1 Char b
t))) ([UniquenessG1 Char b] -> IO ()) -> [UniquenessG1 Char b] -> IO ()
forall a b. (a -> b) -> a -> b
$ [UniquenessG1 Char b]
ys
printUniquenessG1ListStr Info2
_ [] = () -> IO ()
forall (m :: * -> *) a. Monad m => a -> m a
return ()
newLineEnding :: String
newLineEnding :: [Char]
newLineEnding
| Newline
nativeNewline Newline -> Newline -> Bool
forall a. Eq a => a -> a -> Bool
== Newline
LF = [Char]
"\n"
| Bool
otherwise = [Char]
"\r\n"
maximumElByAll ::
(Eq a, Ord b, Show a, Show b) => V.Vector ([b] -> b)
-> UniqG2 a b
-> UniquenessG1 a b
maximumElByAll :: Vector ([b] -> b) -> UniqG2 a b -> UniquenessG1 a b
maximumElByAll Vector ([b] -> b)
vN = Int -> Vector ([b] -> b) -> UniqG2 a b -> UniquenessG1 a b
forall a b.
(Eq a, Ord b) =>
Int -> Vector ([b] -> b) -> UniqG2 a b -> UniquenessG1 a b
maximumElBy (Vector ([b] -> b) -> Int
forall a. Vector a -> Int
V.length Vector ([b] -> b)
vN) Vector ([b] -> b)
vN
{-# INLINE maximumElByAll #-}
maximumElGBy ::
(Eq a, Ord b, Show a, Show b) => [a]
-> Preapp a
-> Int
-> V.Vector ([b] -> b)
-> FuncRep [a] (V.Vector c) [b]
-> [a]
-> UniquenessG1 a b
maximumElGBy :: [a]
-> Preapp a
-> Int
-> Vector ([b] -> b)
-> FuncRep [a] (Vector c) [b]
-> [a]
-> UniquenessG1 a b
maximumElGBy [a]
whspss Preapp a
rr Int
k Vector ([b] -> b)
vN FuncRep [a] (Vector c) [b]
frep [a]
xs
| Int -> Int -> Ordering
forall a. Ord a => a -> a -> Ordering
compare Int
k (Vector ([b] -> b) -> Int
forall a. Vector a -> Int
V.length Vector ([b] -> b)
vN) Ordering -> Ordering -> Bool
forall a. Eq a => a -> a -> Bool
== Ordering
GT = [Char] -> UniquenessG1 a b
forall a. HasCallStack => [Char] -> a
error [Char]
"Languages.UniquenessPeriods.Vector.General.Debug.maximumElGBy: undefined for that amount of norms. "
| Int -> Int -> Ordering
forall a. Ord a => a -> a -> Ordering
compare Int
k Int
0 Ordering -> Ordering -> Bool
forall a. Eq a => a -> a -> Bool
== Ordering
GT =
let vM :: Vector (UniquenessG1 a b)
vM = [a]
-> [a]
-> [a]
-> Vector ([b] -> b)
-> FuncRep [a] (Vector c) [b]
-> [a]
-> Vector (UniquenessG1 a b)
forall a b c.
(Eq a, Ord b) =>
[a]
-> [a]
-> [a]
-> Vector ([b] -> b)
-> FuncRep [a] (Vector c) [b]
-> [a]
-> Vector ([b], Vector b, [a])
uniquenessVariants2GNP (Preapp a -> [a]
forall a b. UGG1 a b => a -> [b]
get1m Preapp a
rr) (Preapp a -> [a]
forall a b. UGG1 a b => a -> [b]
get2m Preapp a
rr) [a]
whspss Vector ([b] -> b)
vN FuncRep [a] (Vector c) [b]
frep [a]
xs
maxK :: UniquenessG1 a b
maxK = (UniquenessG1 a b -> UniquenessG1 a b -> Ordering)
-> Vector (UniquenessG1 a b) -> UniquenessG1 a b
forall a. (a -> a -> Ordering) -> Vector a -> a
V.maximumBy (\([b]
_,Vector b
vN0,[a]
_) ([b]
_,Vector b
vN1,[a]
_) -> b -> b -> Ordering
forall a. Ord a => a -> a -> Ordering
compare (Vector b -> Int -> b
forall a. Vector a -> Int -> a
V.unsafeIndex Vector b
vN0 (Int
k Int -> Int -> Int
forall a. Num a => a -> a -> a
- Int
1)) (Vector b -> Int -> b
forall a. Vector a -> Int -> a
V.unsafeIndex Vector b
vN1 (Int
k Int -> Int -> Int
forall a. Num a => a -> a -> a
- Int
1))) Vector (UniquenessG1 a b)
vM
vK :: Vector (UniquenessG1 a b)
vK = (UniquenessG1 a b -> Bool)
-> Vector (UniquenessG1 a b) -> Vector (UniquenessG1 a b)
forall a. (a -> Bool) -> Vector a -> Vector a
V.filter (\([b]
_,Vector b
vN2,[a]
_) -> Vector b -> Int -> b
forall a. Vector a -> Int -> a
V.unsafeIndex Vector b
vN2 (Int
k Int -> Int -> Int
forall a. Num a => a -> a -> a
- Int
1) b -> b -> Bool
forall a. Eq a => a -> a -> Bool
== Vector b -> Int -> b
forall a. Vector a -> Int -> a
V.unsafeIndex (UniquenessG1 a b -> Vector b
forall a b c. (a, b, c) -> b
secondFrom3 UniquenessG1 a b
maxK) (Int
k Int -> Int -> Int
forall a. Num a => a -> a -> a
- Int
1)) Vector (UniquenessG1 a b)
vM in
Int -> Vector ([b] -> b) -> UniqG2 a b -> UniquenessG1 a b
forall a b.
(Eq a, Ord b) =>
Int -> Vector ([b] -> b) -> UniqG2 a b -> UniquenessG1 a b
maximumElBy (Int
k Int -> Int -> Int
forall a. Num a => a -> a -> a
- Int
1) (Int -> Int -> Vector ([b] -> b) -> Vector ([b] -> b)
forall a. Int -> Int -> Vector a -> Vector a
V.unsafeSlice Int
0 (Int
k Int -> Int -> Int
forall a. Num a => a -> a -> a
- Int
1) Vector ([b] -> b)
vN) (([UniquenessG1 a b], Vector (UniquenessG1 a b)) -> UniqG2 a b
forall a b. ([a], b) -> UniquenessG2 a b
UL2 ([],Vector (UniquenessG1 a b)
vK))
| Bool
otherwise = (UniquenessG1 a b -> UniquenessG1 a b -> Ordering)
-> Vector (UniquenessG1 a b) -> UniquenessG1 a b
forall a. (a -> a -> Ordering) -> Vector a -> a
V.maximumBy (\([b]
_,Vector b
vN0,[a]
_) ([b]
_,Vector b
vN1,[a]
_) -> b -> b -> Ordering
forall a. Ord a => a -> a -> Ordering
compare (Vector b -> Int -> b
forall a. Vector a -> Int -> a
V.unsafeIndex Vector b
vN0 Int
0) (Vector b -> Int -> b
forall a. Vector a -> Int -> a
V.unsafeIndex Vector b
vN1 Int
0)) (Vector (UniquenessG1 a b) -> UniquenessG1 a b)
-> ([a] -> Vector (UniquenessG1 a b)) -> [a] -> UniquenessG1 a b
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [a]
-> Preapp a
-> Vector ([b] -> b)
-> FuncRep [a] (Vector c) [b]
-> [a]
-> Vector (UniquenessG1 a b)
forall a b c.
(Eq a, Ord b, Show a, Show b) =>
[a]
-> Preapp a
-> Vector ([b] -> b)
-> FuncRep [a] (Vector c) [b]
-> [a]
-> Vector (UniquenessG1 a b)
uniquenessVariantsGN [a]
whspss Preapp a
rr Vector ([b] -> b)
vN FuncRep [a] (Vector c) [b]
frep ([a] -> UniquenessG1 a b) -> [a] -> UniquenessG1 a b
forall a b. (a -> b) -> a -> b
$ [a]
xs
uniquenessVariantsGN ::
(Eq a, Ord b, Show a, Show b) => [a]
-> Preapp a
-> V.Vector ([b] -> b)
-> FuncRep [a] (V.Vector c) [b]
-> [a]
-> V.Vector (UniquenessG1 a b)
uniquenessVariantsGN :: [a]
-> Preapp a
-> Vector ([b] -> b)
-> FuncRep [a] (Vector c) [b]
-> [a]
-> Vector (UniquenessG1 a b)
uniquenessVariantsGN [a]
whspss (PA [a]
ts [a]
us) Vector ([b] -> b)
vN FuncRep [a] (Vector c) [b]
frep = [a]
-> [a]
-> [a]
-> Vector ([b] -> b)
-> FuncRep [a] (Vector c) [b]
-> [a]
-> Vector (UniquenessG1 a b)
forall a b c.
(Eq a, Ord b) =>
[a]
-> [a]
-> [a]
-> Vector ([b] -> b)
-> FuncRep [a] (Vector c) [b]
-> [a]
-> Vector ([b], Vector b, [a])
uniquenessVariants2GNP [a]
ts [a]
us [a]
whspss Vector ([b] -> b)
vN FuncRep [a] (Vector c) [b]
frep
uniquenessVariantsGN [a]
whspss Preapp a
K Vector ([b] -> b)
vN FuncRep [a] (Vector c) [b]
frep = [a]
-> Vector ([b] -> b)
-> FuncRep [a] (Vector c) [b]
-> [a]
-> Vector (UniquenessG1 a b)
forall a b c.
(Eq a, Ord b) =>
[a]
-> Vector ([b] -> b)
-> FuncRep [a] (Vector c) [b]
-> [a]
-> Vector ([b], Vector b, [a])
uniquenessVariants2GN [a]
whspss Vector ([b] -> b)
vN FuncRep [a] (Vector c) [b]
frep
{-# INLINE uniquenessVariantsGN #-}
maximumElByVec ::
(Eq a, Ord b, Show a, Show b) => Int
-> V.Vector ([b] -> b)
-> UniqG2 a b
-> UniqG2 a b
maximumElByVec :: Int -> Vector ([b] -> b) -> UniqG2 a b -> UniqG2 a b
maximumElByVec Int
k Vector ([b] -> b)
vN UniqG2 a b
x
| Vector (UniquenessG1 a b) -> Bool
forall a. Vector a -> Bool
V.null (Vector (UniquenessG1 a b) -> Bool)
-> (UniqG2 a b -> Vector (UniquenessG1 a b)) -> UniqG2 a b -> Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ([UniquenessG1 a b], Vector (UniquenessG1 a b))
-> Vector (UniquenessG1 a b)
forall a b. (a, b) -> b
snd (([UniquenessG1 a b], Vector (UniquenessG1 a b))
-> Vector (UniquenessG1 a b))
-> (UniqG2 a b -> ([UniquenessG1 a b], Vector (UniquenessG1 a b)))
-> UniqG2 a b
-> Vector (UniquenessG1 a b)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. UniqG2 a b -> ([UniquenessG1 a b], Vector (UniquenessG1 a b))
forall a b.
UniqG2 a b -> ([UniquenessG1 a b], Vector (UniquenessG1 a b))
get22 (UniqG2 a b -> Bool) -> UniqG2 a b -> Bool
forall a b. (a -> b) -> a -> b
$ UniqG2 a b
x = UniqG2 a b
x
| Bool
otherwise = let !uniq :: UniquenessG1 a b
uniq = Int -> Vector ([b] -> b) -> UniqG2 a b -> UniquenessG1 a b
forall a b.
(Eq a, Ord b) =>
Int -> Vector ([b] -> b) -> UniqG2 a b -> UniquenessG1 a b
maximumElBy Int
k Vector ([b] -> b)
vN UniqG2 a b
x in let !snD :: Vector b
snD = UniquenessG1 a b -> Vector b
forall a b c. (a, b, c) -> b
secondFrom3 UniquenessG1 a b
uniq in ([UniquenessG1 a b], Vector (UniquenessG1 a b)) -> UniqG2 a b
forall a b. ([a], b) -> UniquenessG2 a b
UL2 ((\(!Vector (UniquenessG1 a b)
v1,!Vector (UniquenessG1 a b)
v2) -> ((([UniquenessG1 a b], Vector (UniquenessG1 a b))
-> [UniquenessG1 a b]
forall a b. (a, b) -> a
fst (([UniquenessG1 a b], Vector (UniquenessG1 a b))
-> [UniquenessG1 a b])
-> (UniqG2 a b -> ([UniquenessG1 a b], Vector (UniquenessG1 a b)))
-> UniqG2 a b
-> [UniquenessG1 a b]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. UniqG2 a b -> ([UniquenessG1 a b], Vector (UniquenessG1 a b))
forall a b.
UniqG2 a b -> ([UniquenessG1 a b], Vector (UniquenessG1 a b))
get22 (UniqG2 a b -> [UniquenessG1 a b])
-> UniqG2 a b -> [UniquenessG1 a b]
forall a b. (a -> b) -> a -> b
$ UniqG2 a b
x) [UniquenessG1 a b] -> [UniquenessG1 a b] -> [UniquenessG1 a b]
forall a. [a] -> [a] -> [a]
++ Vector (UniquenessG1 a b) -> [UniquenessG1 a b]
forall a. Vector a -> [a]
V.toList Vector (UniquenessG1 a b)
v1,Vector (UniquenessG1 a b)
v2)) ((Vector (UniquenessG1 a b), Vector (UniquenessG1 a b))
-> ([UniquenessG1 a b], Vector (UniquenessG1 a b)))
-> (UniqG2 a b
-> (Vector (UniquenessG1 a b), Vector (UniquenessG1 a b)))
-> UniqG2 a b
-> ([UniquenessG1 a b], Vector (UniquenessG1 a b))
forall b c a. (b -> c) -> (a -> b) -> a -> c
.
(UniquenessG1 a b -> Bool)
-> Vector (UniquenessG1 a b)
-> (Vector (UniquenessG1 a b), Vector (UniquenessG1 a b))
forall a. (a -> Bool) -> Vector a -> (Vector a, Vector a)
V.unstablePartition (Vector b -> Vector b -> Bool
forall b. Ord b => Vector b -> Vector b -> Bool
equalSnDs Vector b
snD (Vector b -> Bool)
-> (UniquenessG1 a b -> Vector b) -> UniquenessG1 a b -> Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. UniquenessG1 a b -> Vector b
forall a b c. (a, b, c) -> b
secondFrom3) (Vector (UniquenessG1 a b)
-> (Vector (UniquenessG1 a b), Vector (UniquenessG1 a b)))
-> (UniqG2 a b -> Vector (UniquenessG1 a b))
-> UniqG2 a b
-> (Vector (UniquenessG1 a b), Vector (UniquenessG1 a b))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ([UniquenessG1 a b], Vector (UniquenessG1 a b))
-> Vector (UniquenessG1 a b)
forall a b. (a, b) -> b
snd (([UniquenessG1 a b], Vector (UniquenessG1 a b))
-> Vector (UniquenessG1 a b))
-> (UniqG2 a b -> ([UniquenessG1 a b], Vector (UniquenessG1 a b)))
-> UniqG2 a b
-> Vector (UniquenessG1 a b)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. UniqG2 a b -> ([UniquenessG1 a b], Vector (UniquenessG1 a b))
forall a b.
UniqG2 a b -> ([UniquenessG1 a b], Vector (UniquenessG1 a b))
get22 (UniqG2 a b -> ([UniquenessG1 a b], Vector (UniquenessG1 a b)))
-> UniqG2 a b -> ([UniquenessG1 a b], Vector (UniquenessG1 a b))
forall a b. (a -> b) -> a -> b
$ UniqG2 a b
x)
{-# INLINE maximumElByVec #-}
equalSnDs
:: Ord b => V.Vector b
-> V.Vector b
-> Bool
equalSnDs :: Vector b -> Vector b -> Bool
equalSnDs Vector b
v1 Vector b
v2
| Vector b -> Bool
forall a. Vector a -> Bool
V.null Vector b
v1 = Vector b -> Bool
forall a. Vector a -> Bool
V.null Vector b
v2
| Vector b -> Bool
forall a. Vector a -> Bool
V.null Vector b
v2 = Bool
False
| Vector b -> Int -> b
forall a. Vector a -> Int -> a
V.unsafeIndex Vector b
v1 Int
0 b -> b -> Bool
forall a. Eq a => a -> a -> Bool
== Vector b -> Int -> b
forall a. Vector a -> Int -> a
V.unsafeIndex Vector b
v2 Int
0 = Vector b -> Vector b -> Bool
forall b. Ord b => Vector b -> Vector b -> Bool
equalSnDs (Int -> Int -> Vector b -> Vector b
forall a. Int -> Int -> Vector a -> Vector a
V.unsafeSlice Int
1 (Vector b -> Int
forall a. Vector a -> Int
V.length Vector b
v1 Int -> Int -> Int
forall a. Num a => a -> a -> a
- Int
1) Vector b
v1) (Int -> Int -> Vector b -> Vector b
forall a. Int -> Int -> Vector a -> Vector a
V.unsafeSlice Int
1 (Vector b -> Int
forall a. Vector a -> Int
V.length Vector b
v2 Int -> Int -> Int
forall a. Num a => a -> a -> a
- Int
1) Vector b
v2)
| Bool
otherwise = Bool
False
maximumElByVecAll ::
(Eq a, Ord b, Show a, Show b) => V.Vector ([b] -> b)
-> UniqG2 a b
-> UniqG2 a b
maximumElByVecAll :: Vector ([b] -> b) -> UniqG2 a b -> UniqG2 a b
maximumElByVecAll Vector ([b] -> b)
vN = Int -> Vector ([b] -> b) -> UniqG2 a b -> UniqG2 a b
forall a b.
(Eq a, Ord b, Show a, Show b) =>
Int -> Vector ([b] -> b) -> UniqG2 a b -> UniqG2 a b
maximumElByVec (Vector ([b] -> b) -> Int
forall a. Vector a -> Int
V.length Vector ([b] -> b)
vN) Vector ([b] -> b)
vN
{-# INLINE maximumElByVecAll #-}
uniqNPropertiesN ::
(Eq a, Ord b, Show a, Show b) => Int
-> Int
-> V.Vector ([b] -> b)
-> UniqG2 a b
-> UniqG2 a b
uniqNPropertiesN :: Int -> Int -> Vector ([b] -> b) -> UniqG2 a b -> UniqG2 a b
uniqNPropertiesN Int
n Int
k Vector ([b] -> b)
vN UniqG2 a b
y
| Int
n Int -> Int -> Bool
forall a. Ord a => a -> a -> Bool
<= Int
0 = UniqG2 a b
y
| Bool
otherwise = Int -> Int -> Vector ([b] -> b) -> UniqG2 a b -> UniqG2 a b
forall a b.
(Eq a, Ord b, Show a, Show b) =>
Int -> Int -> Vector ([b] -> b) -> UniqG2 a b -> UniqG2 a b
uniqNPropertiesN (Int
n Int -> Int -> Int
forall a. Num a => a -> a -> a
- Int
1) Int
k Vector ([b] -> b)
vN (UniqG2 a b -> UniqG2 a b)
-> (UniqG2 a b -> UniqG2 a b) -> UniqG2 a b -> UniqG2 a b
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Int -> Vector ([b] -> b) -> UniqG2 a b -> UniqG2 a b
forall a b.
(Eq a, Ord b, Show a, Show b) =>
Int -> Vector ([b] -> b) -> UniqG2 a b -> UniqG2 a b
maximumElByVec Int
k Vector ([b] -> b)
vN (UniqG2 a b -> UniqG2 a b) -> UniqG2 a b -> UniqG2 a b
forall a b. (a -> b) -> a -> b
$ UniqG2 a b
y
{-# INLINABLE uniqNPropertiesN #-}
uniqNPropertiesNAll ::
(Eq a, Ord b, Show a, Show b) => Int
-> V.Vector ([b] -> b)
-> UniqG2 a b
-> UniqG2 a b
uniqNPropertiesNAll :: Int -> Vector ([b] -> b) -> UniqG2 a b -> UniqG2 a b
uniqNPropertiesNAll Int
n Vector ([b] -> b)
vN = Int -> Int -> Vector ([b] -> b) -> UniqG2 a b -> UniqG2 a b
forall a b.
(Eq a, Ord b, Show a, Show b) =>
Int -> Int -> Vector ([b] -> b) -> UniqG2 a b -> UniqG2 a b
uniqNPropertiesN Int
n (Vector ([b] -> b) -> Int
forall a. Vector a -> Int
V.length Vector ([b] -> b)
vN) Vector ([b] -> b)
vN
{-# INLINE uniqNPropertiesNAll #-}
uniqNProperties2GN ::
(Eq a, Ord b, Show a, Show b) => [a]
-> Preapp a
-> Int
-> Int
-> V.Vector ([b] -> b)
-> FuncRep [a] (V.Vector c) [b]
-> [a]
-> UniqG2 a b
uniqNProperties2GN :: [a]
-> Preapp a
-> Int
-> Int
-> Vector ([b] -> b)
-> FuncRep [a] (Vector c) [b]
-> [a]
-> UniqG2 a b
uniqNProperties2GN [a]
whspss Preapp a
rr Int
n Int
k Vector ([b] -> b)
vN FuncRep [a] (Vector c) [b]
frep [a]
xs
| Int
n Int -> Int -> Bool
forall a. Ord a => a -> a -> Bool
<= Int
0 = ([UniquenessG1 a b], Vector (UniquenessG1 a b)) -> UniqG2 a b
forall a b. ([a], b) -> UniquenessG2 a b
UL2 ([],Vector (UniquenessG1 a b)
forall a. Vector a
V.empty)
| Bool
otherwise = let v :: Vector (UniquenessG1 a b)
v = [a]
-> [a]
-> [a]
-> Vector ([b] -> b)
-> FuncRep [a] (Vector c) [b]
-> [a]
-> Vector (UniquenessG1 a b)
forall a b c.
(Eq a, Ord b) =>
[a]
-> [a]
-> [a]
-> Vector ([b] -> b)
-> FuncRep [a] (Vector c) [b]
-> [a]
-> Vector ([b], Vector b, [a])
uniquenessVariants2GNP (Preapp a -> [a]
forall a b. UGG1 a b => a -> [b]
get1m Preapp a
rr) (Preapp a -> [a]
forall a b. UGG1 a b => a -> [b]
get2m Preapp a
rr) [a]
whspss Vector ([b] -> b)
vN FuncRep [a] (Vector c) [b]
frep [a]
xs in Int -> Int -> Vector ([b] -> b) -> UniqG2 a b -> UniqG2 a b
forall a b.
(Eq a, Ord b, Show a, Show b) =>
Int -> Int -> Vector ([b] -> b) -> UniqG2 a b -> UniqG2 a b
uniqNPropertiesN (Int
n Int -> Int -> Int
forall a. Num a => a -> a -> a
- Int
1) Int
k Vector ([b] -> b)
vN (UniqG2 a b -> UniqG2 a b)
-> (UniqG2 a b -> UniqG2 a b) -> UniqG2 a b -> UniqG2 a b
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Int -> Vector ([b] -> b) -> UniqG2 a b -> UniqG2 a b
forall a b.
(Eq a, Ord b, Show a, Show b) =>
Int -> Vector ([b] -> b) -> UniqG2 a b -> UniqG2 a b
maximumElByVec Int
k Vector ([b] -> b)
vN (UniqG2 a b -> UniqG2 a b) -> UniqG2 a b -> UniqG2 a b
forall a b. (a -> b) -> a -> b
$ (([UniquenessG1 a b], Vector (UniquenessG1 a b)) -> UniqG2 a b
forall a b. ([a], b) -> UniquenessG2 a b
UL2 ([],Vector (UniquenessG1 a b)
v))