The type `_PackedString' is built-in, i.e., no special action (other than a `-fglasgow-exts' flag) is required to use it.
The documentation here describes the built-in functions.
You may also access this code as a system library and not use the `-fglasgow-exts' flag. Just do `import PackedString', heave in your `-syslib ghc', and drop off the leading underscores which you see here.
We still may change this interface (again).
The basic type and functions which are available are:
data _PackedString _packString :: [Char] -> _PackedString _packStringST :: [Char] -> _ST s _PackedString _packCString :: _Addr -> _PackedString _packCBytes :: Int -> _Addr -> _PackedString _packCBytesST :: Int -> _Addr -> _ST s _PackedString _packBytesForC :: [Char] -> _ByteArray Int _packBytesForCST :: [Char] -> _ST s (_ByteArray Int) _byteArrayToPS :: _ByteArray Int -> _PackedString _psToByteArray :: _PackedString -> _ByteArray Int _unpackPS :: _PackedString -> [Char]
We also provide a wad of list-manipulation-like functions:
_nilPS :: _PackedString _consPS :: Char -> _PackedString -> _PackedString _headPS :: _PackedString -> Char _tailPS :: _PackedString -> _PackedString _nullPS :: _PackedString -> Bool _appendPS :: _PackedString -> _PackedString -> _PackedString _lengthPS :: _PackedString -> Int _indexPS :: _PackedString -> Int -> Char -- 0-origin indexing into the string _mapPS :: (Char -> Char) -> _PackedString -> _PackedString {-or String?-} _filterPS :: (Char -> Bool) -> _PackedString -> _PackedString {-or String?-} _foldlPS :: (a -> Char -> a) -> a -> _PackedString -> a _foldrPS :: (Char -> a -> a) -> a -> _PackedString -> a _takePS :: Int -> _PackedString -> _PackedString _dropPS :: Int -> _PackedString -> _PackedString _splitAtPS :: Int -> _PackedString -> (_PackedString, _PackedString) _takeWhilePS:: (Char -> Bool) -> _PackedString -> _PackedString _dropWhilePS:: (Char -> Bool) -> _PackedString -> _PackedString _spanPS :: (Char -> Bool) -> _PackedString -> (_PackedString, _PackedString) _breakPS :: (Char -> Bool) -> _PackedString -> (_PackedString, _PackedString) _linesPS :: _PackedString -> [_PackedString] _wordsPS :: _PackedString -> [_PackedString] _reversePS :: _PackedString -> _PackedString _concatPS :: [_PackedString] -> _PackedString _substrPS :: _PackedString -> Int -> Int -> _PackedString -- pluck out a piece of a _PS -- start and end chars you want; both 0-origin-specified