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 n bs = case (take n bs, drop n bs) of (as, zs) -> if null zs then [as] else as:chunkBy n zs toBoolsDiff :: [Word64] -> [Bool] -> [Bool] toBoolsDiff = foldr ((.) . W.toBoolsDiff) id toBools :: [Word64] -> [Bool] toBools ws = toBoolsDiff ws []