@@ -1,16 +1,34 @@
11{-# LANGUAGE ExistentialQuantification, BangPatterns, MagicHash #-}
22
3+-- |
4+-- Module : Data.Text.Fusion
5+-- Copyright : (c) Tom Harper 2008-2009,
6+-- (c) Bryan O'Sullivan 2009,
7+-- (c) Duncan Coutts 2009
8+--
9+-- License : BSD-style
10+-- Maintainer : rtharper@aftereternity.co.uk, bos@serpentine.com,
11+-- duncan@haskell.org
12+-- Stability : experimental
13+-- Portability : GHC
14+--
15+-- Text manipulation functions represented as fusible operations over
16+-- streams.
317module Data.Text.Fusion
418 (
19+ -- * Types
520 Stream(..)
621 , Step(..)
722 , Encoding(..)
23+
24+ -- * Creation and elimination
825 , stream
926 , unstream
1027 , stream_bs
1128 , unstream_bs
1229 , restream
13− , eq
30+
31+ -- * Basic interface
1432 , cons
1533 , snoc
1634 , append
@@ -20,32 +38,50 @@ module Data.Text.Fusion
2038 , init
2139 , null
2240 , length
41+ , eq
42+
43+ -- * Transformations
2344 , map
45+ , intersperse
46+
47+ -- * Folds
2448 , foldl
2549 , foldl'
2650 , foldl1
2751 , foldl1'
2852 , foldr
2953 , foldr1
54+
55+ -- ** Special folds
3056 , concat
3157 , concatMap
3258 , any
3359 , all
3460 , maximum
3561 , minimum
62+
63+ -- * Construction
3664 , unfoldr
3765 , unfoldrN
66+
67+ -- * Substrings
68+ -- ** Breaking strings
3869 , take
3970 , drop
4071 , takeWhile
4172 , dropWhile
73+
74+ -- * Searching
4275 , elem
43− , find
4476 , filter
45− , intersperse
77+
78+ -- * Indexing
79+ , find
4680 , index
4781 , findIndex
4882 , elemIndex
83+
84+ -- * Zipping and unzipping
4985 , zipWith
5086 ) where
5187
@@ -54,21 +90,21 @@ import Prelude hiding
5490 foldl1, foldr1, concatMap, any, all, maximum, minimum, take, drop,
5591 takeWhile, dropWhile, elem, zipWith)
5692import Data.Char (ord)
57−import Control.Exception(assert)
58−import Control.Monad(liftM2)
59−import Control.Monad.ST(runST,ST)
93+import Control.Exception (assert)
94+import Control.Monad (liftM2)
95+import Control.Monad.ST (runST, ST)
6096import Data.Bits (shiftL, shiftR, (.&.))
6197import qualified Data.ByteString as B
6298import qualified Data.ByteString.Unsafe as B
63−import Data.ByteString.Internal(ByteString(..),mallocByteString,memcpy)
99+import Data.ByteString.Internal (ByteString(..), mallocByteString, memcpy)
64100import qualified Data.List as L
65−import Data.Word(Word8, Word16, Word32)
66−import Foreign.ForeignPtr(withForeignPtr,ForeignPtr)
67−import Foreign.Storable(pokeByteOff)
101+import Data.Word (Word8, Word16, Word32)
102+import Foreign.ForeignPtr (withForeignPtr, ForeignPtr)
103+import Foreign.Storable (pokeByteOff)
68104import GHC.Exts (Int(..), (+#))
69−import System.IO.Unsafe(unsafePerformIO)
70−import Data.Text.Internal(Text(..),empty)
71−import Data.Text.UnsafeChar(unsafeChr,unsafeChr8,unsafeChr32)
105+import System.IO.Unsafe (unsafePerformIO)
106+import Data.Text.Internal (Text(..), empty)
107+import Data.Text.UnsafeChar (unsafeChr, unsafeChr8, unsafeChr32)
72108import qualified Data.Text.Array as A
73109import qualified Data.Text.Utf8 as U8
74110import qualified Data.Text.Utf16 as U16