-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | Ropes, an alternative to (Byte)Strings. -- -- Ropes : an alternative to Strings, a time and space-efficient -- representation of character strings. @package Data-Rope @version 0 module Data.Rope.Internals c_mmap :: Ptr a -> CSize -> CInt -> CInt -> CInt -> CInt -> IO (Ptr Word8) c_munmap :: Ptr a -> CSize -> IO () c_PROT_NONE :: CInt c_PROT_READ :: CInt c_PROT_WRITE :: CInt c_PROT_EXEC :: CInt c_MAP_SHARED :: CInt c_MAP_FILE :: CInt -- | Implementation of the ideas in -- http://www.cs.ubc.ca/local/reading/proceedings/spe91-95/spe/vol25/issue12/spe986.pdf. -- Inspired also by Data.Map and the OCaml version of ropes. module Data.Rope data Rope -- | O(1) The empty Rope empty :: Rope -- | O(1) Convert a Word8 into a Rope singleton :: Word8 -> Rope -- | O(n) Convert a list of Word8 into a Rope pack :: [Word8] -> Rope -- | O(n) Inverse conversion unpack :: Rope -> [Word8] -- | O(n) Conversion from a strict ByteString fromByteString :: ByteString -> Rope -- | O(n) Conversion to a strict ByteString toByteString :: Rope -> ByteString -- | O(log n). Appends the specified byte at the beginning of the -- Rope. cons :: Word8 -> Rope -> Rope -- | O(log n). Appends the specified byte at the end of the Rope. snoc :: Rope -> Word8 -> Rope -- | O(log n) Concatenates two Ropes append :: Rope -> Rope -> Rope -- | O(log n) First element of the Rope. Raises an error if the -- argument is empty. head :: Rope -> Word8 -- | O(log n). Returns the first element of the Rope, and the -- Rope of the remaining elements. uncons :: Rope -> Maybe (Word8, Rope) -- | O(log n). Last element of a Rope. last :: Rope -> Word8 -- | O(log n) The elements after the head. An error is raised if the -- Rope is empty. tail :: Rope -> Rope -- | O(log n) The elements in the Rope except the last one. init :: Rope -> Rope -- | O(1) Tests whether a Rope is empty. null :: Rope -> Bool -- | O(1) Length of a Rope. length :: Rope -> Int -- | O(n). map f r applies f on each element of -- r and returns the concatenation of the result. map :: (Word8 -> Word8) -> Rope -> Rope -- | O(n) efficient way to reverse a Rope. reverse :: Rope -> Rope -- | O(n) intercalate an element between each element of the list of -- Ropes and concatenates the result. intercalate :: Rope -> [Rope] -> Rope -- | O(log n) insert a i b inserts Rope a -- in Rope b after the ith element of -- b. insert :: Rope -> Int -> Rope -> Rope -- | O(n). fold over a Rope. This implementation is not -- tail-recursive but never pushes more than O(log n) calls on the stack. foldl :: (a -> Word8 -> a) -> a -> Rope -> a -- | O(n). like foldl but strict. foldl' :: (a -> Word8 -> a) -> a -> Rope -> a -- | O(n). Right fold. Again not tail-recursive but never uses more than -- O(log n) on the stack. foldr :: (Word8 -> a -> a) -> a -> Rope -> a take :: Int -> Rope -> Rope drop :: Int -> Rope -> Rope splitAt# :: Int -> Rope -> (# Rope, Rope #) -- | O(log n). splitAt n xs is equivalent to (take n xs, -- drop n xs), but a little faster. splitAt :: Int -> Rope -> (Rope, Rope) -- | O(log n) returns the Word8 at given index in the Rope index :: Rope -> Int -> Char -- | O(n) returns the index of the first element equal to the query -- element. This implementation uses memchr at leaves, and explores the -- rope in parallel (with par). elemIndex :: Word8 -> Rope -> Maybe Int -- | O(n) returns the list of all positions where the queried elements -- occurs in the Rope. This implementation uses memchr. elemIndices :: Word8 -> Rope -> [Int] -- | Lazy file reading, using mmap. readFile :: FilePath -> IO Rope -- | Strict hGet. The whole rope is constructed. hGet :: Handle -> Int -> IO Rope -- | Writes the contents of the Rope on the specified Handle. hPut :: Handle -> Rope -> IO () -- | like hPut, but with a newline character at the end of the -- output hPutStrLn :: Handle -> Rope -> IO () -- | synonym for hPut. hPutStr :: Handle -> Rope -> IO () -- | like putStr but with a newline character at the end of the -- output putStrLn :: Rope -> IO () -- | Writes the contents of the Rope on the standard output. putStr :: Rope -> IO () instance Show Rope instance IsString Rope