module NHC.PackedString where import Prelude hiding(takeWhile,length,Ix(..),substr) import DPackedString import Length import Index import Substr takeWhile :: (Char -> Bool) -> PackedString -> PackedString takeWhile f p = tw 0 (length p) where tw :: Int -> Int -> PackedString tw n l = if n < l then if f (index p n) then tw (n+1) l else substr p 0 n else p