module HaskellWorks.Data.RankSelect.Internal.List ( chunkBy , toBools ) where import Data.Word import qualified HaskellWorks.Data.BalancedParens.Internal.Word as W chunkBy :: Int -> [a] -> [[a]] chunkBy :: Int -> [a] -> [[a]] chunkBy Int n [a] bs = case (Int -> [a] -> [a] forall a. Int -> [a] -> [a] take Int n [a] bs, Int -> [a] -> [a] forall a. Int -> [a] -> [a] drop Int n [a] bs) of ([a] as, [a] zs) -> if [a] -> Bool forall (t :: * -> *) a. Foldable t => t a -> Bool null [a] zs then [[a] as] else [a] as[a] -> [[a]] -> [[a]] forall a. a -> [a] -> [a] :Int -> [a] -> [[a]] forall a. Int -> [a] -> [[a]] chunkBy Int n [a] zs toBoolsDiff :: [Word64] -> [Bool] -> [Bool] toBoolsDiff :: [Word64] -> [Bool] -> [Bool] toBoolsDiff = (Word64 -> ([Bool] -> [Bool]) -> [Bool] -> [Bool]) -> ([Bool] -> [Bool]) -> [Word64] -> [Bool] -> [Bool] forall (t :: * -> *) a b. Foldable t => (a -> b -> b) -> b -> t a -> b foldr (([Bool] -> [Bool]) -> ([Bool] -> [Bool]) -> [Bool] -> [Bool] forall b c a. (b -> c) -> (a -> b) -> a -> c (.) (([Bool] -> [Bool]) -> ([Bool] -> [Bool]) -> [Bool] -> [Bool]) -> (Word64 -> [Bool] -> [Bool]) -> Word64 -> ([Bool] -> [Bool]) -> [Bool] -> [Bool] forall b c a. (b -> c) -> (a -> b) -> a -> c . Word64 -> [Bool] -> [Bool] W.toBoolsDiff) [Bool] -> [Bool] forall a. a -> a id toBools :: [Word64] -> [Bool] toBools :: [Word64] -> [Bool] toBools [Word64] ws = [Word64] -> [Bool] -> [Bool] toBoolsDiff [Word64] ws []