rio 0.0.3.0 → 0.1.0.0
raw patch · 51 files changed
+3363/−187 lines, 51 filesdep ~typed-processdep ~unliftioPVP ok
version bump matches the API change (PVP)
Dependency ranges changed: typed-process, unliftio
API changes (from Hackage documentation)
- RIO.Prelude.Display: DisplayBuilder :: Builder -> DisplayBuilder
- RIO.Prelude.Display: [getUtf8Builder] :: DisplayBuilder -> Builder
- RIO.Prelude.Display: class Display a
- RIO.Prelude.Display: display :: Display a => a -> DisplayBuilder
- RIO.Prelude.Display: displayBuilderToText :: DisplayBuilder -> Text
- RIO.Prelude.Display: displayBytesUtf8 :: ByteString -> DisplayBuilder
- RIO.Prelude.Display: displayShow :: Show a => a -> DisplayBuilder
- RIO.Prelude.Display: instance Data.Semigroup.Semigroup RIO.Prelude.Display.DisplayBuilder
- RIO.Prelude.Display: instance Data.String.IsString RIO.Prelude.Display.DisplayBuilder
- RIO.Prelude.Display: instance GHC.Base.Monoid RIO.Prelude.Display.DisplayBuilder
- RIO.Prelude.Display: instance RIO.Prelude.Display.Display Data.Text.Internal.Lazy.Text
- RIO.Prelude.Display: instance RIO.Prelude.Display.Display Data.Text.Internal.Text
- RIO.Prelude.Display: instance RIO.Prelude.Display.Display GHC.Types.Int
- RIO.Prelude.Display: newtype DisplayBuilder
- RIO.Prelude.Display: writeFileDisplayBuilder :: MonadIO m => FilePath -> DisplayBuilder -> m ()
- RIO.Prelude.Extra: forMaybeA :: Applicative f => [a] -> (a -> f (Maybe b)) -> f [b]
- RIO.Prelude.Extra: forMaybeM :: Monad m => [a] -> (a -> m (Maybe b)) -> m [b]
- RIO.Prelude.Extra: fromFirst :: a -> First a -> a
- RIO.Prelude.Extra: mapLeft :: (a1 -> a2) -> Either a1 b -> Either a2 b
- RIO.Prelude.Extra: mapMaybeA :: Applicative f => (a -> f (Maybe b)) -> [a] -> f [b]
- RIO.Prelude.Extra: mapMaybeM :: Monad m => (a -> m (Maybe b)) -> [a] -> m [b]
- RIO.Prelude.Extra: nubOrd :: Ord a => [a] -> [a]
- RIO.Prelude.IO: ReadFileUtf8Exception :: !FilePath -> !UnicodeException -> ReadFileUtf8Exception
- RIO.Prelude.IO: data ReadFileUtf8Exception
- RIO.Prelude.IO: hPutBuilder :: MonadIO m => Handle -> Builder -> m ()
- RIO.Prelude.IO: instance GHC.Exception.Exception RIO.Prelude.IO.ReadFileUtf8Exception
- RIO.Prelude.IO: instance GHC.Show.Show RIO.Prelude.IO.ReadFileUtf8Exception
- RIO.Prelude.IO: readFileBinary :: MonadIO m => FilePath -> m ByteString
- RIO.Prelude.IO: readFileUtf8 :: MonadIO m => FilePath -> m Text
- RIO.Prelude.IO: withLazyFile :: MonadUnliftIO m => FilePath -> (ByteString -> m a) -> m a
- RIO.Prelude.IO: writeFileBinary :: MonadIO m => FilePath -> ByteString -> m ()
- RIO.Prelude.IO: writeFileUtf8 :: MonadIO m => FilePath -> Text -> m ()
- RIO.Prelude.Lens: (^.) :: () => s -> Getting a s a -> a
- RIO.Prelude.Lens: infixl 8 ^.
- RIO.Prelude.Lens: lens :: () => (s -> a) -> (s -> b -> t) -> Lens s t a b
- RIO.Prelude.Lens: over :: () => ASetter s t a b -> (a -> b) -> s -> t
- RIO.Prelude.Lens: set :: () => ASetter s t a b -> b -> s -> t
- RIO.Prelude.Lens: sets :: () => ((a -> b) -> s -> t) -> ASetter s t a b
- RIO.Prelude.Lens: to :: () => (s -> a) -> SimpleGetter s a
- RIO.Prelude.Lens: type Lens s t a b = forall (f :: * -> *). Functor f => (a -> f b) -> s -> f t
- RIO.Prelude.Lens: type ASetter s t a b = (a -> Identity b) -> s -> Identity t
- RIO.Prelude.Lens: type ASetter' s a = ASetter s s a a
- RIO.Prelude.Lens: type SimpleGetter s a = forall r. () => Getting r s a
- RIO.Prelude.Lens: type Lens' s a = Lens s s a a
- RIO.Prelude.Lens: view :: MonadReader s m => Getting a s a -> m a
- RIO.Prelude.Logger: LevelDebug :: LogLevel
- RIO.Prelude.Logger: LevelError :: LogLevel
- RIO.Prelude.Logger: LevelInfo :: LogLevel
- RIO.Prelude.Logger: LevelOther :: !Text -> LogLevel
- RIO.Prelude.Logger: LevelWarn :: LogLevel
- RIO.Prelude.Logger: class HasLogFunc env
- RIO.Prelude.Logger: data CallStack :: *
- RIO.Prelude.Logger: data LogFunc
- RIO.Prelude.Logger: data LogLevel
- RIO.Prelude.Logger: data LogOptions
- RIO.Prelude.Logger: displayCallStack :: CallStack -> DisplayBuilder
- RIO.Prelude.Logger: instance Data.Semigroup.Semigroup RIO.Prelude.Logger.LogFunc
- RIO.Prelude.Logger: instance GHC.Base.Monoid RIO.Prelude.Logger.LogFunc
- RIO.Prelude.Logger: instance GHC.Classes.Eq RIO.Prelude.Logger.LogLevel
- RIO.Prelude.Logger: instance GHC.Classes.Ord RIO.Prelude.Logger.LogLevel
- RIO.Prelude.Logger: instance GHC.Read.Read RIO.Prelude.Logger.LogLevel
- RIO.Prelude.Logger: instance GHC.Show.Show RIO.Prelude.Logger.LogLevel
- RIO.Prelude.Logger: instance RIO.Prelude.Logger.HasLogFunc RIO.Prelude.Logger.LogFunc
- RIO.Prelude.Logger: logDebug :: (MonadIO m, MonadReader env m, HasLogFunc env, HasCallStack) => DisplayBuilder -> m ()
- RIO.Prelude.Logger: logDebugS :: (MonadIO m, MonadReader env m, HasLogFunc env, HasCallStack) => LogSource -> DisplayBuilder -> m ()
- RIO.Prelude.Logger: logError :: (MonadIO m, MonadReader env m, HasLogFunc env, HasCallStack) => DisplayBuilder -> m ()
- RIO.Prelude.Logger: logErrorS :: (MonadIO m, MonadReader env m, HasLogFunc env, HasCallStack) => LogSource -> DisplayBuilder -> m ()
- RIO.Prelude.Logger: logFuncL :: HasLogFunc env => Lens' env LogFunc
- RIO.Prelude.Logger: logGeneric :: (MonadIO m, MonadReader env m, HasLogFunc env, HasCallStack) => LogSource -> LogLevel -> DisplayBuilder -> m ()
- RIO.Prelude.Logger: logInfo :: (MonadIO m, MonadReader env m, HasLogFunc env, HasCallStack) => DisplayBuilder -> m ()
- RIO.Prelude.Logger: logInfoS :: (MonadIO m, MonadReader env m, HasLogFunc env, HasCallStack) => LogSource -> DisplayBuilder -> m ()
- RIO.Prelude.Logger: logOptionsHandle :: MonadIO m => Handle -> Bool -> m LogOptions
- RIO.Prelude.Logger: logOptionsMemory :: MonadIO m => m (IORef Builder, LogOptions)
- RIO.Prelude.Logger: logOther :: (MonadIO m, MonadReader env m, HasLogFunc env, HasCallStack) => Text -> DisplayBuilder -> m ()
- RIO.Prelude.Logger: logOtherS :: (MonadIO m, MonadReader env m, HasLogFunc env, HasCallStack) => Text -> LogSource -> DisplayBuilder -> m ()
- RIO.Prelude.Logger: logSticky :: (MonadIO m, HasCallStack, MonadReader env m, HasLogFunc env) => DisplayBuilder -> m ()
- RIO.Prelude.Logger: logStickyDone :: (MonadIO m, HasCallStack, MonadReader env m, HasLogFunc env) => DisplayBuilder -> m ()
- RIO.Prelude.Logger: logWarn :: (MonadIO m, MonadReader env m, HasLogFunc env, HasCallStack) => DisplayBuilder -> m ()
- RIO.Prelude.Logger: logWarnS :: (MonadIO m, MonadReader env m, HasLogFunc env, HasCallStack) => LogSource -> DisplayBuilder -> m ()
- RIO.Prelude.Logger: mkLogFunc :: (CallStack -> LogSource -> LogLevel -> DisplayBuilder -> IO ()) -> LogFunc
- RIO.Prelude.Logger: setLogMinLevel :: LogLevel -> LogOptions -> LogOptions
- RIO.Prelude.Logger: setLogTerminal :: Bool -> LogOptions -> LogOptions
- RIO.Prelude.Logger: setLogUseColor :: Bool -> LogOptions -> LogOptions
- RIO.Prelude.Logger: setLogUseTime :: Bool -> LogOptions -> LogOptions
- RIO.Prelude.Logger: setLogVerboseFormat :: Bool -> LogOptions -> LogOptions
- RIO.Prelude.Logger: type LogSource = Text
- RIO.Prelude.Logger: withLogFunc :: MonadUnliftIO m => LogOptions -> (LogFunc -> m a) -> m a
- RIO.Prelude.RIO: RIO :: ReaderT env IO a -> RIO env a
- RIO.Prelude.RIO: [unRIO] :: RIO env a -> ReaderT env IO a
- RIO.Prelude.RIO: instance Control.Monad.Catch.MonadThrow (RIO.Prelude.RIO.RIO env)
- RIO.Prelude.RIO: instance Control.Monad.IO.Class.MonadIO (RIO.Prelude.RIO.RIO env)
- RIO.Prelude.RIO: instance Control.Monad.IO.Unlift.MonadUnliftIO (RIO.Prelude.RIO.RIO env)
- RIO.Prelude.RIO: instance Control.Monad.Reader.Class.MonadReader env (RIO.Prelude.RIO.RIO env)
- RIO.Prelude.RIO: instance GHC.Base.Applicative (RIO.Prelude.RIO.RIO env)
- RIO.Prelude.RIO: instance GHC.Base.Functor (RIO.Prelude.RIO.RIO env)
- RIO.Prelude.RIO: instance GHC.Base.Monad (RIO.Prelude.RIO.RIO env)
- RIO.Prelude.RIO: liftRIO :: (MonadIO m, MonadReader env m) => RIO env a -> m a
- RIO.Prelude.RIO: newtype RIO env a
- RIO.Prelude.RIO: runRIO :: MonadIO m => env -> RIO env a -> m a
- RIO.Prelude.Reexports: ($!!) :: NFData a => (a -> b) -> a -> b
- RIO.Prelude.Reexports: ($!) :: () => (a -> b) -> a -> b
- RIO.Prelude.Reexports: ($) :: () => (a -> b) -> a -> b
- RIO.Prelude.Reexports: ($>) :: Functor f => f a -> b -> f b
- RIO.Prelude.Reexports: (&&&) :: Arrow a => forall b c c'. () => a b c -> a b c' -> a b (c, c')
- RIO.Prelude.Reexports: (&&) :: Bool -> Bool -> Bool
- RIO.Prelude.Reexports: (&) :: () => a -> (a -> b) -> b
- RIO.Prelude.Reexports: (*) :: Num a => a -> a -> a
- RIO.Prelude.Reexports: (**) :: Floating a => a -> a -> a
- RIO.Prelude.Reexports: (***) :: Arrow a => forall b c b' c'. () => a b c -> a b' c' -> a (b, b') (c, c')
- RIO.Prelude.Reexports: (*>) :: Applicative f => f a -> f b -> f b
- RIO.Prelude.Reexports: (+) :: Num a => a -> a -> a
- RIO.Prelude.Reexports: (++) :: () => [a] -> [a] -> [a]
- RIO.Prelude.Reexports: (-) :: Num a => a -> a -> a
- RIO.Prelude.Reexports: (.) :: () => (b -> c) -> (a -> b) -> a -> c
- RIO.Prelude.Reexports: (/) :: Fractional a => a -> a -> a
- RIO.Prelude.Reexports: (/=) :: Eq a => a -> a -> Bool
- RIO.Prelude.Reexports: (<$!>) :: Monad m => (a -> b) -> m a -> m b
- RIO.Prelude.Reexports: (<$) :: Functor f => a -> f b -> f a
- RIO.Prelude.Reexports: (<$>) :: Functor f => (a -> b) -> f a -> f b
- RIO.Prelude.Reexports: (<) :: Ord a => a -> a -> Bool
- RIO.Prelude.Reexports: (<*) :: Applicative f => f a -> f b -> f a
- RIO.Prelude.Reexports: (<*>) :: Applicative f => f (a -> b) -> f a -> f b
- RIO.Prelude.Reexports: (<=) :: Ord a => a -> a -> Bool
- RIO.Prelude.Reexports: (<=<) :: Monad m => (b -> m c) -> (a -> m b) -> a -> m c
- RIO.Prelude.Reexports: (<>) :: Monoid m => m -> m -> m
- RIO.Prelude.Reexports: (<|>) :: Alternative f => forall a. () => f a -> f a -> f a
- RIO.Prelude.Reexports: (=<<) :: Monad m => (a -> m b) -> m a -> m b
- RIO.Prelude.Reexports: (==) :: Eq a => a -> a -> Bool
- RIO.Prelude.Reexports: (>) :: Ord a => a -> a -> Bool
- RIO.Prelude.Reexports: (>=) :: Ord a => a -> a -> Bool
- RIO.Prelude.Reexports: (>=>) :: Monad m => (a -> m b) -> (b -> m c) -> a -> m c
- RIO.Prelude.Reexports: (>>) :: Monad m => m a -> m b -> m b
- RIO.Prelude.Reexports: (>>=) :: Monad m => m a -> (a -> m b) -> m b
- RIO.Prelude.Reexports: (^) :: (Num a, Integral b) => a -> b -> a
- RIO.Prelude.Reexports: (^^) :: (Fractional a, Integral b) => a -> b -> a
- RIO.Prelude.Reexports: (||) :: Bool -> Bool -> Bool
- RIO.Prelude.Reexports: All :: Bool -> All
- RIO.Prelude.Reexports: Any :: Bool -> Any
- RIO.Prelude.Reexports: DecodeError :: String -> Maybe Word8 -> UnicodeException
- RIO.Prelude.Reexports: EQ :: Ordering
- RIO.Prelude.Reexports: EncodeError :: String -> Maybe Char -> UnicodeException
- RIO.Prelude.Reexports: Endo :: (a -> a) -> Endo a
- RIO.Prelude.Reexports: ExitFailure :: Int -> ExitCode
- RIO.Prelude.Reexports: ExitSuccess :: ExitCode
- RIO.Prelude.Reexports: False :: Bool
- RIO.Prelude.Reexports: First :: Maybe a -> First a
- RIO.Prelude.Reexports: GT :: Ordering
- RIO.Prelude.Reexports: Just :: a -> Maybe a
- RIO.Prelude.Reexports: LT :: Ordering
- RIO.Prelude.Reexports: Last :: Maybe a -> Last a
- RIO.Prelude.Reexports: Left :: a -> Either a b
- RIO.Prelude.Reexports: Nothing :: Maybe a
- RIO.Prelude.Reexports: Product :: a -> Product a
- RIO.Prelude.Reexports: ReaderT :: (r -> m a) -> ReaderT k r
- RIO.Prelude.Reexports: Right :: b -> Either a b
- RIO.Prelude.Reexports: Sum :: a -> Sum a
- RIO.Prelude.Reexports: True :: Bool
- RIO.Prelude.Reexports: [appEndo] :: Endo a -> a -> a
- RIO.Prelude.Reexports: [getAll] :: All -> Bool
- RIO.Prelude.Reexports: [getAny] :: Any -> Bool
- RIO.Prelude.Reexports: [getFirst] :: First a -> Maybe a
- RIO.Prelude.Reexports: [getLast] :: Last a -> Maybe a
- RIO.Prelude.Reexports: [getProduct] :: Product a -> a
- RIO.Prelude.Reexports: [getSum] :: Sum a -> a
- RIO.Prelude.Reexports: [runReaderT] :: ReaderT k r -> r -> m a
- RIO.Prelude.Reexports: abs :: Num a => a -> a
- RIO.Prelude.Reexports: absurd :: () => Void -> a
- RIO.Prelude.Reexports: acos :: Floating a => a -> a
- RIO.Prelude.Reexports: acosh :: Floating a => a -> a
- RIO.Prelude.Reexports: all :: Foldable t => (a -> Bool) -> t a -> Bool
- RIO.Prelude.Reexports: and :: Foldable t => t Bool -> Bool
- RIO.Prelude.Reexports: any :: Foldable t => (a -> Bool) -> t a -> Bool
- RIO.Prelude.Reexports: asTypeOf :: () => a -> a -> a
- RIO.Prelude.Reexports: asin :: Floating a => a -> a
- RIO.Prelude.Reexports: asinh :: Floating a => a -> a
- RIO.Prelude.Reexports: ask :: MonadReader r m => m r
- RIO.Prelude.Reexports: asks :: MonadReader r m => (r -> a) -> m a
- RIO.Prelude.Reexports: asum :: (Foldable t, Alternative f) => t f a -> f a
- RIO.Prelude.Reexports: atan :: Floating a => a -> a
- RIO.Prelude.Reexports: atan2 :: RealFloat a => a -> a -> a
- RIO.Prelude.Reexports: atanh :: Floating a => a -> a
- RIO.Prelude.Reexports: break :: () => (a -> Bool) -> [a] -> ([a], [a])
- RIO.Prelude.Reexports: byteSwap16 :: Word16 -> Word16
- RIO.Prelude.Reexports: byteSwap32 :: Word32 -> Word32
- RIO.Prelude.Reexports: byteSwap64 :: Word64 -> Word64
- RIO.Prelude.Reexports: catMaybes :: () => [Maybe a] -> [a]
- RIO.Prelude.Reexports: ceiling :: (RealFrac a, Integral b) => a -> b
- RIO.Prelude.Reexports: class Applicative f => Alternative (f :: * -> *)
- RIO.Prelude.Reexports: class Functor f => Applicative (f :: * -> *)
- RIO.Prelude.Reexports: class Bounded a
- RIO.Prelude.Reexports: class Typeable * a => Data a
- RIO.Prelude.Reexports: class Enum a
- RIO.Prelude.Reexports: class Eq a
- RIO.Prelude.Reexports: class Fractional a => Floating a
- RIO.Prelude.Reexports: class Foldable (t :: * -> *)
- RIO.Prelude.Reexports: class Num a => Fractional a
- RIO.Prelude.Reexports: class Functor (f :: * -> *)
- RIO.Prelude.Reexports: class Generic a
- RIO.Prelude.Reexports: class Hashable a
- RIO.Prelude.Reexports: class (Real a, Enum a) => Integral a
- RIO.Prelude.Reexports: class IsString a
- RIO.Prelude.Reexports: class Applicative m => Monad (m :: * -> *)
- RIO.Prelude.Reexports: class (Alternative m, Monad m) => MonadPlus (m :: * -> *)
- RIO.Prelude.Reexports: class Monad m => MonadReader r (m :: * -> *) | m -> r
- RIO.Prelude.Reexports: class Monad m => MonadThrow (m :: * -> *)
- RIO.Prelude.Reexports: class MonadTrans (t :: (* -> *) -> * -> *)
- RIO.Prelude.Reexports: class Monoid a
- RIO.Prelude.Reexports: class NFData a
- RIO.Prelude.Reexports: class Num a
- RIO.Prelude.Reexports: class Eq a => Ord a
- RIO.Prelude.Reexports: class Monad m => PrimMonad (m :: * -> *) where {
- RIO.Prelude.Reexports: class Read a
- RIO.Prelude.Reexports: class (Num a, Ord a) => Real a
- RIO.Prelude.Reexports: class (RealFrac a, Floating a) => RealFloat a
- RIO.Prelude.Reexports: class (Real a, Fractional a) => RealFrac a
- RIO.Prelude.Reexports: class Semigroup a
- RIO.Prelude.Reexports: class Show a
- RIO.Prelude.Reexports: class Storable a
- RIO.Prelude.Reexports: class (Functor t, Foldable t) => Traversable (t :: * -> *)
- RIO.Prelude.Reexports: class (Vector Vector a, MVector MVector a) => Unbox a
- RIO.Prelude.Reexports: compare :: Ord a => a -> a -> Ordering
- RIO.Prelude.Reexports: comparing :: Ord a => (b -> a) -> b -> b -> Ordering
- RIO.Prelude.Reexports: concat :: Foldable t => t [a] -> [a]
- RIO.Prelude.Reexports: concatMap :: Foldable t => (a -> [b]) -> t a -> [b]
- RIO.Prelude.Reexports: const :: () => a -> b -> a
- RIO.Prelude.Reexports: cos :: Floating a => a -> a
- RIO.Prelude.Reexports: cosh :: Floating a => a -> a
- RIO.Prelude.Reexports: curry :: () => ((a, b) -> c) -> a -> b -> c
- RIO.Prelude.Reexports: data Bool :: *
- RIO.Prelude.Reexports: data Builder :: *
- RIO.Prelude.Reexports: data ByteString :: *
- RIO.Prelude.Reexports: data Char :: *
- RIO.Prelude.Reexports: data Double :: *
- RIO.Prelude.Reexports: data Either a b :: * -> * -> *
- RIO.Prelude.Reexports: data ExitCode :: *
- RIO.Prelude.Reexports: data Float :: *
- RIO.Prelude.Reexports: data HashMap k v :: * -> * -> *
- RIO.Prelude.Reexports: data HashSet a :: * -> *
- RIO.Prelude.Reexports: data IO a :: * -> *
- RIO.Prelude.Reexports: data Int :: *
- RIO.Prelude.Reexports: data Int16 :: *
- RIO.Prelude.Reexports: data Int32 :: *
- RIO.Prelude.Reexports: data Int64 :: *
- RIO.Prelude.Reexports: data Int8 :: *
- RIO.Prelude.Reexports: data IntMap a :: * -> *
- RIO.Prelude.Reexports: data IntSet :: *
- RIO.Prelude.Reexports: data Integer :: *
- RIO.Prelude.Reexports: data Map k a :: * -> * -> *
- RIO.Prelude.Reexports: data Maybe a :: * -> *
- RIO.Prelude.Reexports: data Ordering :: *
- RIO.Prelude.Reexports: data Set a :: * -> *
- RIO.Prelude.Reexports: data ShortByteString :: *
- RIO.Prelude.Reexports: data Text :: *
- RIO.Prelude.Reexports: data UnicodeException :: *
- RIO.Prelude.Reexports: data Vector a :: * -> *
- RIO.Prelude.Reexports: data Void :: *
- RIO.Prelude.Reexports: data Word :: *
- RIO.Prelude.Reexports: data Word16 :: *
- RIO.Prelude.Reexports: data Word32 :: *
- RIO.Prelude.Reexports: data Word64 :: *
- RIO.Prelude.Reexports: data Word8 :: *
- RIO.Prelude.Reexports: dataCast1 :: (Data a, Typeable (* -> *) t) => (forall d. Data d => c t d) -> Maybe c a
- RIO.Prelude.Reexports: dataCast2 :: (Data a, Typeable (* -> * -> *) t) => (forall d e. (Data d, Data e) => c t d e) -> Maybe c a
- RIO.Prelude.Reexports: dataTypeOf :: Data a => a -> DataType
- RIO.Prelude.Reexports: decodeFloat :: RealFloat a => a -> (Integer, Int)
- RIO.Prelude.Reexports: decodeUtf8' :: ByteString -> Either UnicodeException Text
- RIO.Prelude.Reexports: decodeUtf8With :: OnDecodeError -> ByteString -> Text
- RIO.Prelude.Reexports: div :: Integral a => a -> a -> a
- RIO.Prelude.Reexports: divMod :: Integral a => a -> a -> (a, a)
- RIO.Prelude.Reexports: drop :: () => Int -> [a] -> [a]
- RIO.Prelude.Reexports: dropWhile :: () => (a -> Bool) -> [a] -> [a]
- RIO.Prelude.Reexports: either :: () => (a -> c) -> (b -> c) -> Either a b -> c
- RIO.Prelude.Reexports: elem :: Foldable t => forall a. Eq a => a -> t a -> Bool
- RIO.Prelude.Reexports: encodeFloat :: RealFloat a => Integer -> Int -> a
- RIO.Prelude.Reexports: encodeUtf8 :: Text -> ByteString
- RIO.Prelude.Reexports: encodeUtf8Builder :: Text -> Builder
- RIO.Prelude.Reexports: error :: HasCallStack => [Char] -> a
- RIO.Prelude.Reexports: even :: Integral a => a -> Bool
- RIO.Prelude.Reexports: exp :: Floating a => a -> a
- RIO.Prelude.Reexports: exponent :: RealFloat a => a -> Int
- RIO.Prelude.Reexports: fail :: Monad m => String -> m a
- RIO.Prelude.Reexports: filter :: () => (a -> Bool) -> [a] -> [a]
- RIO.Prelude.Reexports: filterM :: Applicative m => (a -> m Bool) -> [a] -> m [a]
- RIO.Prelude.Reexports: first :: Arrow a => forall b c d. () => a b c -> a (b, d) (c, d)
- RIO.Prelude.Reexports: fix :: () => (a -> a) -> a
- RIO.Prelude.Reexports: flip :: () => (a -> b -> c) -> b -> a -> c
- RIO.Prelude.Reexports: floatDigits :: RealFloat a => a -> Int
- RIO.Prelude.Reexports: floatRadix :: RealFloat a => a -> Integer
- RIO.Prelude.Reexports: floatRange :: RealFloat a => a -> (Int, Int)
- RIO.Prelude.Reexports: floor :: (RealFrac a, Integral b) => a -> b
- RIO.Prelude.Reexports: fmap :: Functor f => (a -> b) -> f a -> f b
- RIO.Prelude.Reexports: fold :: Foldable t => forall m. Monoid m => t m -> m
- RIO.Prelude.Reexports: foldM :: (Foldable t, Monad m) => (b -> a -> m b) -> b -> t a -> m b
- RIO.Prelude.Reexports: foldM_ :: (Foldable t, Monad m) => (b -> a -> m b) -> b -> t a -> m ()
- RIO.Prelude.Reexports: foldMap :: Foldable t => forall m a. Monoid m => (a -> m) -> t a -> m
- RIO.Prelude.Reexports: foldl' :: Foldable t => forall b a. () => (b -> a -> b) -> b -> t a -> b
- RIO.Prelude.Reexports: foldr :: Foldable t => forall a b. () => (a -> b -> b) -> b -> t a -> b
- RIO.Prelude.Reexports: for :: (Traversable t, Applicative f) => t a -> (a -> f b) -> f t b
- RIO.Prelude.Reexports: forM :: (Traversable t, Monad m) => t a -> (a -> m b) -> m t b
- RIO.Prelude.Reexports: forM_ :: (Foldable t, Monad m) => t a -> (a -> m b) -> m ()
- RIO.Prelude.Reexports: for_ :: (Foldable t, Applicative f) => t a -> (a -> f b) -> f ()
- RIO.Prelude.Reexports: force :: NFData a => a -> a
- RIO.Prelude.Reexports: forever :: Applicative f => f a -> f b
- RIO.Prelude.Reexports: fromInteger :: Num a => Integer -> a
- RIO.Prelude.Reexports: fromIntegral :: (Integral a, Num b) => a -> b
- RIO.Prelude.Reexports: fromMaybe :: () => a -> Maybe a -> a
- RIO.Prelude.Reexports: fromRational :: Fractional a => Rational -> a
- RIO.Prelude.Reexports: fromShort :: ShortByteString -> ByteString
- RIO.Prelude.Reexports: fromString :: IsString a => String -> a
- RIO.Prelude.Reexports: fst :: () => (a, b) -> a
- RIO.Prelude.Reexports: gcd :: Integral a => a -> a -> a
- RIO.Prelude.Reexports: gfoldl :: Data a => (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. () => g -> c g) -> a -> c a
- RIO.Prelude.Reexports: gmapM :: (Data a, Monad m) => (forall d. Data d => d -> m d) -> a -> m a
- RIO.Prelude.Reexports: gmapMo :: (Data a, MonadPlus m) => (forall d. Data d => d -> m d) -> a -> m a
- RIO.Prelude.Reexports: gmapMp :: (Data a, MonadPlus m) => (forall d. Data d => d -> m d) -> a -> m a
- RIO.Prelude.Reexports: gmapQ :: Data a => (forall d. Data d => d -> u) -> a -> [u]
- RIO.Prelude.Reexports: gmapQi :: Data a => Int -> (forall d. Data d => d -> u) -> a -> u
- RIO.Prelude.Reexports: gmapQl :: Data a => (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> a -> r
- RIO.Prelude.Reexports: gmapQr :: Data a => (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> a -> r
- RIO.Prelude.Reexports: gmapT :: Data a => (forall b. Data b => b -> b) -> a -> a
- RIO.Prelude.Reexports: guard :: Alternative f => Bool -> f ()
- RIO.Prelude.Reexports: gunfold :: Data a => (forall b r. Data b => c (b -> r) -> c r) -> (forall r. () => r -> c r) -> Constr -> c a
- RIO.Prelude.Reexports: id :: () => a -> a
- RIO.Prelude.Reexports: infix 4 `notElem`
- RIO.Prelude.Reexports: infixl 0 `on`
- RIO.Prelude.Reexports: infixl 1 &
- RIO.Prelude.Reexports: infixl 3 <|>
- RIO.Prelude.Reexports: infixl 4 <$>
- RIO.Prelude.Reexports: infixr 0 $!
- RIO.Prelude.Reexports: infixr 1 >=>
- RIO.Prelude.Reexports: infixr 2 ||
- RIO.Prelude.Reexports: infixr 3 &&
- RIO.Prelude.Reexports: infixr 5 ++
- RIO.Prelude.Reexports: infixr 6 <>
- RIO.Prelude.Reexports: infixr 8 ^^
- RIO.Prelude.Reexports: infixr 9 .
- RIO.Prelude.Reexports: isDenormalized :: RealFloat a => a -> Bool
- RIO.Prelude.Reexports: isIEEE :: RealFloat a => a -> Bool
- RIO.Prelude.Reexports: isInfinite :: RealFloat a => a -> Bool
- RIO.Prelude.Reexports: isJust :: () => Maybe a -> Bool
- RIO.Prelude.Reexports: isLeft :: () => Either a b -> Bool
- RIO.Prelude.Reexports: isNaN :: RealFloat a => a -> Bool
- RIO.Prelude.Reexports: isNegativeZero :: RealFloat a => a -> Bool
- RIO.Prelude.Reexports: isNothing :: () => Maybe a -> Bool
- RIO.Prelude.Reexports: isRight :: () => Either a b -> Bool
- RIO.Prelude.Reexports: join :: Monad m => m m a -> m a
- RIO.Prelude.Reexports: lcm :: Integral a => a -> a -> a
- RIO.Prelude.Reexports: lefts :: () => [Either a b] -> [a]
- RIO.Prelude.Reexports: length :: Foldable t => forall a. () => t a -> Int
- RIO.Prelude.Reexports: lenientDecode :: OnDecodeError
- RIO.Prelude.Reexports: lift :: (MonadTrans t, Monad m) => m a -> t m a
- RIO.Prelude.Reexports: liftA :: Applicative f => (a -> b) -> f a -> f b
- RIO.Prelude.Reexports: liftA2 :: Applicative f => (a -> b -> c) -> f a -> f b -> f c
- RIO.Prelude.Reexports: liftA3 :: Applicative f => (a -> b -> c -> d) -> f a -> f b -> f c -> f d
- RIO.Prelude.Reexports: liftM :: Monad m => (a1 -> r) -> m a1 -> m r
- RIO.Prelude.Reexports: liftM2 :: Monad m => (a1 -> a2 -> r) -> m a1 -> m a2 -> m r
- RIO.Prelude.Reexports: lines :: String -> [String]
- RIO.Prelude.Reexports: listToMaybe :: () => [a] -> Maybe a
- RIO.Prelude.Reexports: local :: MonadReader r m => forall a. () => (r -> r) -> m a -> m a
- RIO.Prelude.Reexports: log :: Floating a => a -> a
- RIO.Prelude.Reexports: logBase :: Floating a => a -> a -> a
- RIO.Prelude.Reexports: lookup :: Eq a => a -> [(a, b)] -> Maybe b
- RIO.Prelude.Reexports: many :: Alternative f => forall a. () => f a -> f [a]
- RIO.Prelude.Reexports: map :: () => (a -> b) -> [a] -> [b]
- RIO.Prelude.Reexports: mapM :: (Traversable t, Monad m) => (a -> m b) -> t a -> m t b
- RIO.Prelude.Reexports: mapM_ :: (Foldable t, Monad m) => (a -> m b) -> t a -> m ()
- RIO.Prelude.Reexports: mapMaybe :: () => (a -> Maybe b) -> [a] -> [b]
- RIO.Prelude.Reexports: mappend :: Monoid a => a -> a -> a
- RIO.Prelude.Reexports: max :: Ord a => a -> a -> a
- RIO.Prelude.Reexports: maxBound :: Bounded a => a
- RIO.Prelude.Reexports: maybe :: () => b -> (a -> b) -> Maybe a -> b
- RIO.Prelude.Reexports: maybeToList :: () => Maybe a -> [a]
- RIO.Prelude.Reexports: mconcat :: Monoid a => [a] -> a
- RIO.Prelude.Reexports: mempty :: Monoid a => a
- RIO.Prelude.Reexports: min :: Ord a => a -> a -> a
- RIO.Prelude.Reexports: minBound :: Bounded a => a
- RIO.Prelude.Reexports: mod :: Integral a => a -> a -> a
- RIO.Prelude.Reexports: mplus :: MonadPlus m => m a -> m a -> m a
- RIO.Prelude.Reexports: msum :: (Foldable t, MonadPlus m) => t m a -> m a
- RIO.Prelude.Reexports: mzero :: MonadPlus m => m a
- RIO.Prelude.Reexports: negate :: Num a => a -> a
- RIO.Prelude.Reexports: newtype ReaderT k r (m :: k -> *) (a :: k) :: forall k. () => * -> (k -> *) -> k -> *
- RIO.Prelude.Reexports: newtype All :: *
- RIO.Prelude.Reexports: newtype Any :: *
- RIO.Prelude.Reexports: newtype Endo a :: * -> *
- RIO.Prelude.Reexports: newtype First a :: * -> *
- RIO.Prelude.Reexports: newtype Last a :: * -> *
- RIO.Prelude.Reexports: newtype Product a :: * -> *
- RIO.Prelude.Reexports: newtype Sum a :: * -> *
- RIO.Prelude.Reexports: not :: Bool -> Bool
- RIO.Prelude.Reexports: notElem :: (Foldable t, Eq a) => a -> t a -> Bool
- RIO.Prelude.Reexports: null :: Foldable t => forall a. () => t a -> Bool
- RIO.Prelude.Reexports: odd :: Integral a => a -> Bool
- RIO.Prelude.Reexports: on :: () => (b -> b -> c) -> (a -> b) -> a -> a -> c
- RIO.Prelude.Reexports: optional :: Alternative f => f a -> f Maybe a
- RIO.Prelude.Reexports: or :: Foldable t => t Bool -> Bool
- RIO.Prelude.Reexports: otherwise :: Bool
- RIO.Prelude.Reexports: partitionEithers :: () => [Either a b] -> ([a], [b])
- RIO.Prelude.Reexports: pi :: Floating a => a
- RIO.Prelude.Reexports: primitive :: PrimMonad m => (State# PrimState m -> (# TupleRep [] RuntimeRep, LiftedRep, State# PrimState m, a #)) -> m a
- RIO.Prelude.Reexports: product :: Foldable t => forall a. Num a => t a -> a
- RIO.Prelude.Reexports: properFraction :: (RealFrac a, Integral b) => a -> (b, a)
- RIO.Prelude.Reexports: pure :: Applicative f => a -> f a
- RIO.Prelude.Reexports: quot :: Integral a => a -> a -> a
- RIO.Prelude.Reexports: quotRem :: Integral a => a -> a -> (a, a)
- RIO.Prelude.Reexports: readMaybe :: Read a => String -> Maybe a
- RIO.Prelude.Reexports: realToFrac :: (Real a, Fractional b) => a -> b
- RIO.Prelude.Reexports: recip :: Fractional a => a -> a
- RIO.Prelude.Reexports: rem :: Integral a => a -> a -> a
- RIO.Prelude.Reexports: replicate :: () => Int -> a -> [a]
- RIO.Prelude.Reexports: replicateM_ :: Applicative m => Int -> m a -> m ()
- RIO.Prelude.Reexports: return :: Monad m => a -> m a
- RIO.Prelude.Reexports: reverse :: () => [a] -> [a]
- RIO.Prelude.Reexports: rights :: () => [Either a b] -> [b]
- RIO.Prelude.Reexports: rnf :: NFData a => a -> ()
- RIO.Prelude.Reexports: round :: (RealFrac a, Integral b) => a -> b
- RIO.Prelude.Reexports: scaleFloat :: RealFloat a => Int -> a -> a
- RIO.Prelude.Reexports: second :: Arrow a => forall b c d. () => a b c -> a (d, b) (d, c)
- RIO.Prelude.Reexports: seq :: () => a -> b -> b
- RIO.Prelude.Reexports: sequence :: (Traversable t, Monad m) => t m a -> m t a
- RIO.Prelude.Reexports: sequenceA :: (Traversable t, Applicative f) => t f a -> f t a
- RIO.Prelude.Reexports: sequenceA_ :: (Foldable t, Applicative f) => t f a -> f ()
- RIO.Prelude.Reexports: sequence_ :: (Foldable t, Monad m) => t m a -> m ()
- RIO.Prelude.Reexports: show :: Show a => a -> String
- RIO.Prelude.Reexports: significand :: RealFloat a => a -> a
- RIO.Prelude.Reexports: signum :: Num a => a -> a
- RIO.Prelude.Reexports: sin :: Floating a => a -> a
- RIO.Prelude.Reexports: sinh :: Floating a => a -> a
- RIO.Prelude.Reexports: snd :: () => (a, b) -> b
- RIO.Prelude.Reexports: some :: Alternative f => forall a. () => f a -> f [a]
- RIO.Prelude.Reexports: span :: () => (a -> Bool) -> [a] -> ([a], [a])
- RIO.Prelude.Reexports: sqrt :: Floating a => a -> a
- RIO.Prelude.Reexports: subtract :: Num a => a -> a -> a
- RIO.Prelude.Reexports: sum :: Foldable t => forall a. Num a => t a -> a
- RIO.Prelude.Reexports: take :: () => Int -> [a] -> [a]
- RIO.Prelude.Reexports: takeWhile :: () => (a -> Bool) -> [a] -> [a]
- RIO.Prelude.Reexports: tan :: Floating a => a -> a
- RIO.Prelude.Reexports: tanh :: Floating a => a -> a
- RIO.Prelude.Reexports: threadDelay :: MonadIO m => Int -> m ()
- RIO.Prelude.Reexports: throwM :: (MonadThrow m, Exception e) => e -> m a
- RIO.Prelude.Reexports: toConstr :: Data a => a -> Constr
- RIO.Prelude.Reexports: toInteger :: Integral a => a -> Integer
- RIO.Prelude.Reexports: toList :: Foldable t => forall a. () => t a -> [a]
- RIO.Prelude.Reexports: toRational :: Real a => a -> Rational
- RIO.Prelude.Reexports: toShort :: ByteString -> ShortByteString
- RIO.Prelude.Reexports: traverse :: (Traversable t, Applicative f) => (a -> f b) -> t a -> f t b
- RIO.Prelude.Reexports: traverse_ :: (Foldable t, Applicative f) => (a -> f b) -> t a -> f ()
- RIO.Prelude.Reexports: truncate :: (RealFrac a, Integral b) => a -> b
- RIO.Prelude.Reexports: type FilePath = String
- RIO.Prelude.Reexports: type HasCallStack = ?callStack :: CallStack
- RIO.Prelude.Reexports: type Rational = Ratio Integer
- RIO.Prelude.Reexports: type String = [Char]
- RIO.Prelude.Reexports: type family PrimState (m :: * -> *) :: *;
- RIO.Prelude.Reexports: uncurry :: () => (a -> b -> c) -> (a, b) -> c
- RIO.Prelude.Reexports: undefined :: HasCallStack => a
- RIO.Prelude.Reexports: unless :: Applicative f => Bool -> f () -> f ()
- RIO.Prelude.Reexports: unlines :: [String] -> String
- RIO.Prelude.Reexports: unwords :: [String] -> String
- RIO.Prelude.Reexports: void :: Functor f => f a -> f ()
- RIO.Prelude.Reexports: when :: Applicative f => Bool -> f () -> f ()
- RIO.Prelude.Reexports: words :: String -> [String]
- RIO.Prelude.Reexports: zip :: () => [a] -> [b] -> [(a, b)]
- RIO.Prelude.Reexports: zipWithM :: Applicative m => (a -> b -> m c) -> [a] -> [b] -> m [c]
- RIO.Prelude.Reexports: zipWithM_ :: Applicative m => (a -> b -> m c) -> [a] -> [b] -> m ()
- RIO.Prelude.Reexports: }
- RIO.Prelude.Renames: fromStrictBytes :: ByteString -> LByteString
- RIO.Prelude.Renames: sappend :: Semigroup s => s -> s -> s
- RIO.Prelude.Renames: toStrictBytes :: LByteString -> ByteString
- RIO.Prelude.Renames: type GVector = Vector
- RIO.Prelude.Renames: type LByteString = ByteString
- RIO.Prelude.Renames: type LText = Text
- RIO.Prelude.Renames: type SVector = Vector
- RIO.Prelude.Renames: type UVector = Vector
- RIO.Prelude.Text: decodeUtf8Lenient :: ByteString -> Text
- RIO.Prelude.Text: stripCR :: Text -> Text
- RIO.Prelude.Text: tshow :: Show a => a -> Text
- RIO.Prelude.URef: class (Vector Vector a, MVector MVector a) => Unbox a
- RIO.Prelude.URef: data URef s a
- RIO.Prelude.URef: modifyURef :: (PrimMonad m, Unbox a) => URef (PrimState m) a -> (a -> a) -> m ()
- RIO.Prelude.URef: newURef :: (PrimMonad m, Unbox a) => a -> m (URef (PrimState m) a)
- RIO.Prelude.URef: readURef :: (PrimMonad m, Unbox a) => URef (PrimState m) a -> m a
- RIO.Prelude.URef: type IOURef = URef (PrimState IO)
- RIO.Prelude.URef: writeURef :: (PrimMonad m, Unbox a) => URef (PrimState m) a -> a -> m ()
+ RIO: ($!!) :: NFData a => (a -> b) -> a -> b
+ RIO: ($!) :: () => (a -> b) -> a -> b
+ RIO: ($) :: () => (a -> b) -> a -> b
+ RIO: ($>) :: Functor f => f a -> b -> f b
+ RIO: (&&&) :: Arrow a => forall b c c'. () => a b c -> a b c' -> a b (c, c')
+ RIO: (&&) :: Bool -> Bool -> Bool
+ RIO: (&) :: () => a -> (a -> b) -> b
+ RIO: (*) :: Num a => a -> a -> a
+ RIO: (**) :: Floating a => a -> a -> a
+ RIO: (***) :: Arrow a => forall b c b' c'. () => a b c -> a b' c' -> a (b, b') (c, c')
+ RIO: (*>) :: Applicative f => f a -> f b -> f b
+ RIO: (+) :: Num a => a -> a -> a
+ RIO: (++) :: () => [a] -> [a] -> [a]
+ RIO: (-) :: Num a => a -> a -> a
+ RIO: (.) :: () => (b -> c) -> (a -> b) -> a -> c
+ RIO: (/) :: Fractional a => a -> a -> a
+ RIO: (/=) :: Eq a => a -> a -> Bool
+ RIO: (<$!>) :: Monad m => (a -> b) -> m a -> m b
+ RIO: (<$) :: Functor f => a -> f b -> f a
+ RIO: (<$>) :: Functor f => (a -> b) -> f a -> f b
+ RIO: (<) :: Ord a => a -> a -> Bool
+ RIO: (<*) :: Applicative f => f a -> f b -> f a
+ RIO: (<*>) :: Applicative f => f (a -> b) -> f a -> f b
+ RIO: (<=) :: Ord a => a -> a -> Bool
+ RIO: (<=<) :: Monad m => (b -> m c) -> (a -> m b) -> a -> m c
+ RIO: (<>) :: Semigroup a => a -> a -> a
+ RIO: (<|>) :: Alternative f => forall a. () => f a -> f a -> f a
+ RIO: (=<<) :: Monad m => (a -> m b) -> m a -> m b
+ RIO: (==) :: Eq a => a -> a -> Bool
+ RIO: (>) :: Ord a => a -> a -> Bool
+ RIO: (>=) :: Ord a => a -> a -> Bool
+ RIO: (>=>) :: Monad m => (a -> m b) -> (b -> m c) -> a -> m c
+ RIO: (>>) :: Monad m => m a -> m b -> m b
+ RIO: (>>=) :: Monad m => m a -> (a -> m b) -> m b
+ RIO: (^) :: (Num a, Integral b) => a -> b -> a
+ RIO: (^.) :: () => s -> Getting a s a -> a
+ RIO: (^^) :: (Fractional a, Integral b) => a -> b -> a
+ RIO: (||) :: Bool -> Bool -> Bool
+ RIO: DecodeError :: String -> Maybe Word8 -> UnicodeException
+ RIO: EQ :: Ordering
+ RIO: EncodeError :: String -> Maybe Char -> UnicodeException
+ RIO: ExitFailure :: Int -> ExitCode
+ RIO: ExitSuccess :: ExitCode
+ RIO: False :: Bool
+ RIO: GT :: Ordering
+ RIO: Just :: a -> Maybe a
+ RIO: LT :: Ordering
+ RIO: Left :: a -> Either a b
+ RIO: LevelDebug :: LogLevel
+ RIO: LevelError :: LogLevel
+ RIO: LevelInfo :: LogLevel
+ RIO: LevelOther :: !Text -> LogLevel
+ RIO: LevelWarn :: LogLevel
+ RIO: Nothing :: Maybe a
+ RIO: RIO :: ReaderT env IO a -> RIO env a
+ RIO: ReaderT :: (r -> m a) -> ReaderT k r
+ RIO: Right :: b -> Either a b
+ RIO: True :: Bool
+ RIO: Utf8Builder :: Builder -> Utf8Builder
+ RIO: [getUtf8Builder] :: Utf8Builder -> Builder
+ RIO: [runReaderT] :: ReaderT k r -> r -> m a
+ RIO: [unRIO] :: RIO env a -> ReaderT env IO a
+ RIO: abs :: Num a => a -> a
+ RIO: absurd :: () => Void -> a
+ RIO: acos :: Floating a => a -> a
+ RIO: acosh :: Floating a => a -> a
+ RIO: all :: Foldable t => (a -> Bool) -> t a -> Bool
+ RIO: and :: Foldable t => t Bool -> Bool
+ RIO: any :: Foldable t => (a -> Bool) -> t a -> Bool
+ RIO: asTypeOf :: () => a -> a -> a
+ RIO: asin :: Floating a => a -> a
+ RIO: asinh :: Floating a => a -> a
+ RIO: ask :: MonadReader r m => m r
+ RIO: asks :: MonadReader r m => (r -> a) -> m a
+ RIO: asum :: (Foldable t, Alternative f) => t f a -> f a
+ RIO: atan :: Floating a => a -> a
+ RIO: atan2 :: RealFloat a => a -> a -> a
+ RIO: atanh :: Floating a => a -> a
+ RIO: bool :: () => a -> a -> Bool -> a
+ RIO: break :: () => (a -> Bool) -> [a] -> ([a], [a])
+ RIO: byteSwap16 :: Word16 -> Word16
+ RIO: byteSwap32 :: Word32 -> Word32
+ RIO: byteSwap64 :: Word64 -> Word64
+ RIO: catMaybes :: () => [Maybe a] -> [a]
+ RIO: ceiling :: (RealFrac a, Integral b) => a -> b
+ RIO: class Applicative f => Alternative (f :: * -> *)
+ RIO: class Functor f => Applicative (f :: * -> *)
+ RIO: class Bounded a
+ RIO: class Typeable * a => Data a
+ RIO: class Display a
+ RIO: class Enum a
+ RIO: class Eq a
+ RIO: class Fractional a => Floating a
+ RIO: class Foldable (t :: * -> *)
+ RIO: class Num a => Fractional a
+ RIO: class Functor (f :: * -> *)
+ RIO: class Generic a
+ RIO: class HasLogFunc env
+ RIO: class Hashable a
+ RIO: class (Real a, Enum a) => Integral a
+ RIO: class IsString a
+ RIO: class Applicative m => Monad (m :: * -> *)
+ RIO: class (Alternative m, Monad m) => MonadPlus (m :: * -> *)
+ RIO: class Monad m => MonadReader r (m :: * -> *) | m -> r
+ RIO: class Monad m => MonadThrow (m :: * -> *)
+ RIO: class MonadTrans (t :: (* -> *) -> * -> *)
+ RIO: class Monoid a
+ RIO: class NFData a
+ RIO: class Num a
+ RIO: class Eq a => Ord a
+ RIO: class Monad m => PrimMonad (m :: * -> *) where {
+ RIO: class Read a
+ RIO: class (Num a, Ord a) => Real a
+ RIO: class (RealFrac a, Floating a) => RealFloat a
+ RIO: class (Real a, Fractional a) => RealFrac a
+ RIO: class Semigroup a
+ RIO: class Show a
+ RIO: class Storable a
+ RIO: class (Functor t, Foldable t) => Traversable (t :: * -> *)
+ RIO: class (Vector Vector a, MVector MVector a) => Unbox a
+ RIO: compare :: Ord a => a -> a -> Ordering
+ RIO: comparing :: Ord a => (b -> a) -> b -> b -> Ordering
+ RIO: concat :: Foldable t => t [a] -> [a]
+ RIO: concatMap :: Foldable t => (a -> [b]) -> t a -> [b]
+ RIO: const :: () => a -> b -> a
+ RIO: cos :: Floating a => a -> a
+ RIO: cosh :: Floating a => a -> a
+ RIO: curry :: () => ((a, b) -> c) -> a -> b -> c
+ RIO: data Bool :: *
+ RIO: data Builder :: *
+ RIO: data ByteString :: *
+ RIO: data CallStack :: *
+ RIO: data Char :: *
+ RIO: data Double :: *
+ RIO: data Either a b :: * -> * -> *
+ RIO: data ExitCode :: *
+ RIO: data Float :: *
+ RIO: data HashMap k v :: * -> * -> *
+ RIO: data HashSet a :: * -> *
+ RIO: data IO a :: * -> *
+ RIO: data Int :: *
+ RIO: data Int16 :: *
+ RIO: data Int32 :: *
+ RIO: data Int64 :: *
+ RIO: data Int8 :: *
+ RIO: data IntMap a :: * -> *
+ RIO: data IntSet :: *
+ RIO: data Integer :: *
+ RIO: data LogFunc
+ RIO: data LogLevel
+ RIO: data LogOptions
+ RIO: data Map k a :: * -> * -> *
+ RIO: data Maybe a :: * -> *
+ RIO: data Ordering :: *
+ RIO: data Set a :: * -> *
+ RIO: data ShortByteString :: *
+ RIO: data Text :: *
+ RIO: data ThreadId :: *
+ RIO: data URef s a
+ RIO: data UnicodeException :: *
+ RIO: data Vector a :: * -> *
+ RIO: data Void :: *
+ RIO: data Word :: *
+ RIO: data Word16 :: *
+ RIO: data Word32 :: *
+ RIO: data Word64 :: *
+ RIO: data Word8 :: *
+ RIO: dataCast1 :: (Data a, Typeable (* -> *) t) => (forall d. Data d => c t d) -> Maybe c a
+ RIO: dataCast2 :: (Data a, Typeable (* -> * -> *) t) => (forall d e. (Data d, Data e) => c t d e) -> Maybe c a
+ RIO: dataTypeOf :: Data a => a -> DataType
+ RIO: decodeFloat :: RealFloat a => a -> (Integer, Int)
+ RIO: decodeUtf8' :: ByteString -> Either UnicodeException Text
+ RIO: decodeUtf8Lenient :: ByteString -> Text
+ RIO: decodeUtf8With :: OnDecodeError -> ByteString -> Text
+ RIO: display :: Display a => a -> Utf8Builder
+ RIO: displayBytesUtf8 :: ByteString -> Utf8Builder
+ RIO: displayCallStack :: CallStack -> Utf8Builder
+ RIO: displayShow :: Show a => a -> Utf8Builder
+ RIO: div :: Integral a => a -> a -> a
+ RIO: divMod :: Integral a => a -> a -> (a, a)
+ RIO: drop :: () => Int -> [a] -> [a]
+ RIO: dropWhile :: () => (a -> Bool) -> [a] -> [a]
+ RIO: either :: () => (a -> c) -> (b -> c) -> Either a b -> c
+ RIO: elem :: Foldable t => forall a. Eq a => a -> t a -> Bool
+ RIO: encodeFloat :: RealFloat a => Integer -> Int -> a
+ RIO: encodeUtf8 :: Text -> ByteString
+ RIO: encodeUtf8Builder :: Text -> Builder
+ RIO: error :: HasCallStack => [Char] -> a
+ RIO: even :: Integral a => a -> Bool
+ RIO: exp :: Floating a => a -> a
+ RIO: exponent :: RealFloat a => a -> Int
+ RIO: fail :: Monad m => String -> m a
+ RIO: filter :: () => (a -> Bool) -> [a] -> [a]
+ RIO: filterM :: Applicative m => (a -> m Bool) -> [a] -> m [a]
+ RIO: first :: Arrow a => forall b c d. () => a b c -> a (b, d) (c, d)
+ RIO: fix :: () => (a -> a) -> a
+ RIO: flip :: () => (a -> b -> c) -> b -> a -> c
+ RIO: floatDigits :: RealFloat a => a -> Int
+ RIO: floatRadix :: RealFloat a => a -> Integer
+ RIO: floatRange :: RealFloat a => a -> (Int, Int)
+ RIO: floor :: (RealFrac a, Integral b) => a -> b
+ RIO: fmap :: Functor f => (a -> b) -> f a -> f b
+ RIO: fold :: Foldable t => forall m. Monoid m => t m -> m
+ RIO: foldM :: (Foldable t, Monad m) => (b -> a -> m b) -> b -> t a -> m b
+ RIO: foldM_ :: (Foldable t, Monad m) => (b -> a -> m b) -> b -> t a -> m ()
+ RIO: foldMap :: Foldable t => forall m a. Monoid m => (a -> m) -> t a -> m
+ RIO: foldl' :: Foldable t => forall b a. () => (b -> a -> b) -> b -> t a -> b
+ RIO: foldr :: Foldable t => forall a b. () => (a -> b -> b) -> b -> t a -> b
+ RIO: for :: (Traversable t, Applicative f) => t a -> (a -> f b) -> f t b
+ RIO: forM :: (Traversable t, Monad m) => t a -> (a -> m b) -> m t b
+ RIO: forM_ :: (Foldable t, Monad m) => t a -> (a -> m b) -> m ()
+ RIO: forMaybeA :: Applicative f => [a] -> (a -> f (Maybe b)) -> f [b]
+ RIO: forMaybeM :: Monad m => [a] -> (a -> m (Maybe b)) -> m [b]
+ RIO: for_ :: (Foldable t, Applicative f) => t a -> (a -> f b) -> f ()
+ RIO: force :: NFData a => a -> a
+ RIO: forever :: Applicative f => f a -> f b
+ RIO: fromFirst :: a -> First a -> a
+ RIO: fromInteger :: Num a => Integer -> a
+ RIO: fromIntegral :: (Integral a, Num b) => a -> b
+ RIO: fromMaybe :: () => a -> Maybe a -> a
+ RIO: fromRational :: Fractional a => Rational -> a
+ RIO: fromShort :: ShortByteString -> ByteString
+ RIO: fromStrictBytes :: ByteString -> LByteString
+ RIO: fromString :: IsString a => String -> a
+ RIO: fst :: () => (a, b) -> a
+ RIO: gcd :: Integral a => a -> a -> a
+ RIO: gfoldl :: Data a => (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. () => g -> c g) -> a -> c a
+ RIO: gmapM :: (Data a, Monad m) => (forall d. Data d => d -> m d) -> a -> m a
+ RIO: gmapMo :: (Data a, MonadPlus m) => (forall d. Data d => d -> m d) -> a -> m a
+ RIO: gmapMp :: (Data a, MonadPlus m) => (forall d. Data d => d -> m d) -> a -> m a
+ RIO: gmapQ :: Data a => (forall d. Data d => d -> u) -> a -> [u]
+ RIO: gmapQi :: Data a => Int -> (forall d. Data d => d -> u) -> a -> u
+ RIO: gmapQl :: Data a => (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> a -> r
+ RIO: gmapQr :: Data a => (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> a -> r
+ RIO: gmapT :: Data a => (forall b. Data b => b -> b) -> a -> a
+ RIO: guard :: Alternative f => Bool -> f ()
+ RIO: gunfold :: Data a => (forall b r. Data b => c (b -> r) -> c r) -> (forall r. () => r -> c r) -> Constr -> c a
+ RIO: hPutBuilder :: MonadIO m => Handle -> Builder -> m ()
+ RIO: id :: () => a -> a
+ RIO: infix 4 `notElem`
+ RIO: infixl 0 `on`
+ RIO: infixl 1 &
+ RIO: infixl 3 <|>
+ RIO: infixl 4 <$>
+ RIO: infixl 8 ^.
+ RIO: infixr 0 $!
+ RIO: infixr 1 >=>
+ RIO: infixr 2 ||
+ RIO: infixr 3 &&
+ RIO: infixr 5 ++
+ RIO: infixr 8 ^^
+ RIO: infixr 9 .
+ RIO: isCurrentThreadBound :: MonadIO m => m Bool
+ RIO: isDenormalized :: RealFloat a => a -> Bool
+ RIO: isIEEE :: RealFloat a => a -> Bool
+ RIO: isInfinite :: RealFloat a => a -> Bool
+ RIO: isJust :: () => Maybe a -> Bool
+ RIO: isLeft :: () => Either a b -> Bool
+ RIO: isNaN :: RealFloat a => a -> Bool
+ RIO: isNegativeZero :: RealFloat a => a -> Bool
+ RIO: isNothing :: () => Maybe a -> Bool
+ RIO: isRight :: () => Either a b -> Bool
+ RIO: join :: Monad m => m m a -> m a
+ RIO: lcm :: Integral a => a -> a -> a
+ RIO: lefts :: () => [Either a b] -> [a]
+ RIO: length :: Foldable t => forall a. () => t a -> Int
+ RIO: lenientDecode :: OnDecodeError
+ RIO: lens :: () => (s -> a) -> (s -> b -> t) -> Lens s t a b
+ RIO: lift :: (MonadTrans t, Monad m) => m a -> t m a
+ RIO: liftA :: Applicative f => (a -> b) -> f a -> f b
+ RIO: liftA2 :: Applicative f => (a -> b -> c) -> f a -> f b -> f c
+ RIO: liftA3 :: Applicative f => (a -> b -> c -> d) -> f a -> f b -> f c -> f d
+ RIO: liftM :: Monad m => (a1 -> r) -> m a1 -> m r
+ RIO: liftM2 :: Monad m => (a1 -> a2 -> r) -> m a1 -> m a2 -> m r
+ RIO: liftRIO :: (MonadIO m, MonadReader env m) => RIO env a -> m a
+ RIO: lines :: String -> [String]
+ RIO: listToMaybe :: () => [a] -> Maybe a
+ RIO: local :: MonadReader r m => forall a. () => (r -> r) -> m a -> m a
+ RIO: log :: Floating a => a -> a
+ RIO: logBase :: Floating a => a -> a -> a
+ RIO: logDebug :: (MonadIO m, MonadReader env m, HasLogFunc env, HasCallStack) => Utf8Builder -> m ()
+ RIO: logDebugS :: (MonadIO m, MonadReader env m, HasLogFunc env, HasCallStack) => LogSource -> Utf8Builder -> m ()
+ RIO: logError :: (MonadIO m, MonadReader env m, HasLogFunc env, HasCallStack) => Utf8Builder -> m ()
+ RIO: logErrorS :: (MonadIO m, MonadReader env m, HasLogFunc env, HasCallStack) => LogSource -> Utf8Builder -> m ()
+ RIO: logFuncL :: HasLogFunc env => Lens' env LogFunc
+ RIO: logFuncUseColorL :: HasLogFunc env => SimpleGetter env Bool
+ RIO: logGeneric :: (MonadIO m, MonadReader env m, HasLogFunc env, HasCallStack) => LogSource -> LogLevel -> Utf8Builder -> m ()
+ RIO: logInfo :: (MonadIO m, MonadReader env m, HasLogFunc env, HasCallStack) => Utf8Builder -> m ()
+ RIO: logInfoS :: (MonadIO m, MonadReader env m, HasLogFunc env, HasCallStack) => LogSource -> Utf8Builder -> m ()
+ RIO: logOptionsHandle :: MonadIO m => Handle -> Bool -> m LogOptions
+ RIO: logOptionsMemory :: MonadIO m => m (IORef Builder, LogOptions)
+ RIO: logOther :: (MonadIO m, MonadReader env m, HasLogFunc env, HasCallStack) => Text -> Utf8Builder -> m ()
+ RIO: logOtherS :: (MonadIO m, MonadReader env m, HasLogFunc env, HasCallStack) => Text -> LogSource -> Utf8Builder -> m ()
+ RIO: logSticky :: (MonadIO m, HasCallStack, MonadReader env m, HasLogFunc env) => Utf8Builder -> m ()
+ RIO: logStickyDone :: (MonadIO m, HasCallStack, MonadReader env m, HasLogFunc env) => Utf8Builder -> m ()
+ RIO: logWarn :: (MonadIO m, MonadReader env m, HasLogFunc env, HasCallStack) => Utf8Builder -> m ()
+ RIO: logWarnS :: (MonadIO m, MonadReader env m, HasLogFunc env, HasCallStack) => LogSource -> Utf8Builder -> m ()
+ RIO: lookup :: Eq a => a -> [(a, b)] -> Maybe b
+ RIO: many :: Alternative f => forall a. () => f a -> f [a]
+ RIO: map :: () => (a -> b) -> [a] -> [b]
+ RIO: mapLeft :: (a1 -> a2) -> Either a1 b -> Either a2 b
+ RIO: mapM :: (Traversable t, Monad m) => (a -> m b) -> t a -> m t b
+ RIO: mapM_ :: (Foldable t, Monad m) => (a -> m b) -> t a -> m ()
+ RIO: mapMaybe :: () => (a -> Maybe b) -> [a] -> [b]
+ RIO: mapMaybeA :: Applicative f => (a -> f (Maybe b)) -> [a] -> f [b]
+ RIO: mapMaybeM :: Monad m => (a -> m (Maybe b)) -> [a] -> m [b]
+ RIO: mappend :: Monoid a => a -> a -> a
+ RIO: max :: Ord a => a -> a -> a
+ RIO: maxBound :: Bounded a => a
+ RIO: maybe :: () => b -> (a -> b) -> Maybe a -> b
+ RIO: maybeToList :: () => Maybe a -> [a]
+ RIO: mconcat :: Monoid a => [a] -> a
+ RIO: mempty :: Monoid a => a
+ RIO: min :: Ord a => a -> a -> a
+ RIO: minBound :: Bounded a => a
+ RIO: mkLogFunc :: (CallStack -> LogSource -> LogLevel -> Utf8Builder -> IO ()) -> LogFunc
+ RIO: mod :: Integral a => a -> a -> a
+ RIO: modifyURef :: (PrimMonad m, Unbox a) => URef (PrimState m) a -> (a -> a) -> m ()
+ RIO: mplus :: MonadPlus m => m a -> m a -> m a
+ RIO: msum :: (Foldable t, MonadPlus m) => t m a -> m a
+ RIO: myThreadId :: MonadIO m => m ThreadId
+ RIO: mzero :: MonadPlus m => m a
+ RIO: negate :: Num a => a -> a
+ RIO: newURef :: (PrimMonad m, Unbox a) => a -> m (URef (PrimState m) a)
+ RIO: newtype ReaderT k r (m :: k -> *) (a :: k) :: forall k. () => * -> (k -> *) -> k -> *
+ RIO: newtype RIO env a
+ RIO: newtype Utf8Builder
+ RIO: not :: Bool -> Bool
+ RIO: notElem :: (Foldable t, Eq a) => a -> t a -> Bool
+ RIO: nubOrd :: Ord a => [a] -> [a]
+ RIO: null :: Foldable t => forall a. () => t a -> Bool
+ RIO: odd :: Integral a => a -> Bool
+ RIO: on :: () => (b -> b -> c) -> (a -> b) -> a -> a -> c
+ RIO: optional :: Alternative f => f a -> f Maybe a
+ RIO: or :: Foldable t => t Bool -> Bool
+ RIO: otherwise :: Bool
+ RIO: over :: () => ASetter s t a b -> (a -> b) -> s -> t
+ RIO: partitionEithers :: () => [Either a b] -> ([a], [b])
+ RIO: pi :: Floating a => a
+ RIO: primitive :: PrimMonad m => (State# PrimState m -> (# TupleRep [] RuntimeRep, LiftedRep, State# PrimState m, a #)) -> m a
+ RIO: product :: Foldable t => forall a. Num a => t a -> a
+ RIO: properFraction :: (RealFrac a, Integral b) => a -> (b, a)
+ RIO: pure :: Applicative f => a -> f a
+ RIO: quot :: Integral a => a -> a -> a
+ RIO: quotRem :: Integral a => a -> a -> (a, a)
+ RIO: readFileBinary :: MonadIO m => FilePath -> m ByteString
+ RIO: readFileUtf8 :: MonadIO m => FilePath -> m Text
+ RIO: readMaybe :: Read a => String -> Maybe a
+ RIO: readURef :: (PrimMonad m, Unbox a) => URef (PrimState m) a -> m a
+ RIO: realToFrac :: (Real a, Fractional b) => a -> b
+ RIO: recip :: Fractional a => a -> a
+ RIO: rem :: Integral a => a -> a -> a
+ RIO: replicate :: () => Int -> a -> [a]
+ RIO: replicateM_ :: Applicative m => Int -> m a -> m ()
+ RIO: return :: Monad m => a -> m a
+ RIO: reverse :: () => [a] -> [a]
+ RIO: rights :: () => [Either a b] -> [b]
+ RIO: rnf :: NFData a => a -> ()
+ RIO: round :: (RealFrac a, Integral b) => a -> b
+ RIO: runRIO :: MonadIO m => env -> RIO env a -> m a
+ RIO: sappend :: Semigroup s => s -> s -> s
+ RIO: scaleFloat :: RealFloat a => Int -> a -> a
+ RIO: sconcat :: Semigroup a => NonEmpty a -> a
+ RIO: second :: Arrow a => forall b c d. () => a b c -> a (d, b) (d, c)
+ RIO: seq :: () => a -> b -> b
+ RIO: sequence :: (Traversable t, Monad m) => t m a -> m t a
+ RIO: sequenceA :: (Traversable t, Applicative f) => t f a -> f t a
+ RIO: sequenceA_ :: (Foldable t, Applicative f) => t f a -> f ()
+ RIO: sequence_ :: (Foldable t, Monad m) => t m a -> m ()
+ RIO: set :: () => ASetter s t a b -> b -> s -> t
+ RIO: setLogMinLevel :: LogLevel -> LogOptions -> LogOptions
+ RIO: setLogTerminal :: Bool -> LogOptions -> LogOptions
+ RIO: setLogUseColor :: Bool -> LogOptions -> LogOptions
+ RIO: setLogUseTime :: Bool -> LogOptions -> LogOptions
+ RIO: setLogVerboseFormat :: Bool -> LogOptions -> LogOptions
+ RIO: sets :: () => ((a -> b) -> s -> t) -> ASetter s t a b
+ RIO: show :: Show a => a -> String
+ RIO: significand :: RealFloat a => a -> a
+ RIO: signum :: Num a => a -> a
+ RIO: sin :: Floating a => a -> a
+ RIO: sinh :: Floating a => a -> a
+ RIO: snd :: () => (a, b) -> b
+ RIO: some :: Alternative f => forall a. () => f a -> f [a]
+ RIO: span :: () => (a -> Bool) -> [a] -> ([a], [a])
+ RIO: sqrt :: Floating a => a -> a
+ RIO: stimes :: (Semigroup a, Integral b) => b -> a -> a
+ RIO: subtract :: Num a => a -> a -> a
+ RIO: sum :: Foldable t => forall a. Num a => t a -> a
+ RIO: take :: () => Int -> [a] -> [a]
+ RIO: takeWhile :: () => (a -> Bool) -> [a] -> [a]
+ RIO: tan :: Floating a => a -> a
+ RIO: tanh :: Floating a => a -> a
+ RIO: threadDelay :: MonadIO m => Int -> m ()
+ RIO: threadWaitRead :: MonadIO m => Fd -> m ()
+ RIO: threadWaitWrite :: MonadIO m => Fd -> m ()
+ RIO: throwM :: (MonadThrow m, Exception e) => e -> m a
+ RIO: to :: () => (s -> a) -> SimpleGetter s a
+ RIO: toConstr :: Data a => a -> Constr
+ RIO: toInteger :: Integral a => a -> Integer
+ RIO: toList :: Foldable t => forall a. () => t a -> [a]
+ RIO: toRational :: Real a => a -> Rational
+ RIO: toShort :: ByteString -> ShortByteString
+ RIO: toStrictBytes :: LByteString -> ByteString
+ RIO: trace :: Text -> a -> a
+ RIO: traceDisplay :: Display a => a -> b -> b
+ RIO: traceDisplayEvent :: Display a => a -> b -> b
+ RIO: traceDisplayEventIO :: (Display a, MonadIO m) => a -> m ()
+ RIO: traceDisplayIO :: (Display a, MonadIO m) => a -> m ()
+ RIO: traceDisplayId :: Display a => a -> a
+ RIO: traceDisplayM :: (Display a, Applicative f) => a -> f ()
+ RIO: traceDisplayMarker :: Display a => a -> b -> b
+ RIO: traceDisplayMarkerIO :: (Display a, MonadIO m) => a -> m ()
+ RIO: traceDisplayStack :: Display a => a -> b -> b
+ RIO: traceEvent :: Text -> a -> a
+ RIO: traceEventIO :: MonadIO m => Text -> m ()
+ RIO: traceIO :: MonadIO m => Text -> m ()
+ RIO: traceId :: Text -> Text
+ RIO: traceM :: Applicative f => Text -> f ()
+ RIO: traceMarker :: Text -> a -> a
+ RIO: traceMarkerIO :: MonadIO m => Text -> m ()
+ RIO: traceShow :: Show a => a -> b -> b
+ RIO: traceShowEvent :: Show a => a -> b -> b
+ RIO: traceShowEventIO :: (Show a, MonadIO m) => a -> m ()
+ RIO: traceShowIO :: (Show a, MonadIO m) => a -> m ()
+ RIO: traceShowId :: Show a => a -> a
+ RIO: traceShowM :: (Show a, Applicative f) => a -> f ()
+ RIO: traceShowMarker :: Show a => a -> b -> b
+ RIO: traceShowMarkerIO :: (Show a, MonadIO m) => a -> m ()
+ RIO: traceShowStack :: Show a => a -> b -> b
+ RIO: traceStack :: Text -> a -> a
+ RIO: traverse :: (Traversable t, Applicative f) => (a -> f b) -> t a -> f t b
+ RIO: traverse_ :: (Foldable t, Applicative f) => (a -> f b) -> t a -> f ()
+ RIO: truncate :: (RealFrac a, Integral b) => a -> b
+ RIO: tshow :: Show a => a -> Text
+ RIO: type Lens s t a b = forall (f :: * -> *). Functor f => (a -> f b) -> s -> f t
+ RIO: type ASetter s t a b = (a -> Identity b) -> s -> Identity t
+ RIO: type ASetter' s a = ASetter s s a a
+ RIO: type FilePath = String
+ RIO: type GVector = Vector
+ RIO: type SimpleGetter s a = forall r. () => Getting r s a
+ RIO: type HasCallStack = ?callStack :: CallStack
+ RIO: type IOURef = URef (PrimState IO)
+ RIO: type LByteString = ByteString
+ RIO: type LText = Text
+ RIO: type Lens' s a = Lens s s a a
+ RIO: type LogSource = Text
+ RIO: type Rational = Ratio Integer
+ RIO: type SVector = Vector
+ RIO: type String = [Char]
+ RIO: type UVector = Vector
+ RIO: type family PrimState (m :: * -> *) :: *;
+ RIO: uncurry :: () => (a -> b -> c) -> (a, b) -> c
+ RIO: undefined :: HasCallStack => a
+ RIO: unless :: Applicative f => Bool -> f () -> f ()
+ RIO: unlessM :: Monad m => m Bool -> m () -> m ()
+ RIO: unlines :: [String] -> String
+ RIO: unwords :: [String] -> String
+ RIO: utf8BuilderToLazyText :: Utf8Builder -> Text
+ RIO: utf8BuilderToText :: Utf8Builder -> Text
+ RIO: view :: MonadReader s m => Getting a s a -> m a
+ RIO: void :: Functor f => f a -> f ()
+ RIO: when :: Applicative f => Bool -> f () -> f ()
+ RIO: whenM :: Monad m => m Bool -> m () -> m ()
+ RIO: withLazyFile :: MonadUnliftIO m => FilePath -> (ByteString -> m a) -> m a
+ RIO: withLogFunc :: MonadUnliftIO m => LogOptions -> (LogFunc -> m a) -> m a
+ RIO: words :: String -> [String]
+ RIO: writeFileBinary :: MonadIO m => FilePath -> ByteString -> m ()
+ RIO: writeFileUtf8 :: MonadIO m => FilePath -> Text -> m ()
+ RIO: writeFileUtf8Builder :: MonadIO m => FilePath -> Utf8Builder -> m ()
+ RIO: writeURef :: (PrimMonad m, Unbox a) => URef (PrimState m) a -> a -> m ()
+ RIO: yieldThread :: MonadIO m => m ()
+ RIO: zip :: () => [a] -> [b] -> [(a, b)]
+ RIO: zipWithM :: Applicative m => (a -> b -> m c) -> [a] -> [b] -> m [c]
+ RIO: zipWithM_ :: Applicative m => (a -> b -> m c) -> [a] -> [b] -> m ()
+ RIO: }
+ RIO.ByteString.Lazy: all :: (Word8 -> Bool) -> ByteString -> Bool
+ RIO.ByteString.Lazy: any :: (Word8 -> Bool) -> ByteString -> Bool
+ RIO.ByteString.Lazy: append :: ByteString -> ByteString -> ByteString
+ RIO.ByteString.Lazy: appendFile :: MonadIO m => FilePath -> LByteString -> m ()
+ RIO.ByteString.Lazy: break :: (Word8 -> Bool) -> ByteString -> (ByteString, ByteString)
+ RIO.ByteString.Lazy: concat :: [ByteString] -> ByteString
+ RIO.ByteString.Lazy: concatMap :: (Word8 -> ByteString) -> ByteString -> ByteString
+ RIO.ByteString.Lazy: cons :: Word8 -> ByteString -> ByteString
+ RIO.ByteString.Lazy: cons' :: Word8 -> ByteString -> ByteString
+ RIO.ByteString.Lazy: copy :: ByteString -> ByteString
+ RIO.ByteString.Lazy: count :: Word8 -> ByteString -> Int64
+ RIO.ByteString.Lazy: cycle :: ByteString -> ByteString
+ RIO.ByteString.Lazy: data ByteString :: *
+ RIO.ByteString.Lazy: drop :: Int64 -> ByteString -> ByteString
+ RIO.ByteString.Lazy: dropWhile :: (Word8 -> Bool) -> ByteString -> ByteString
+ RIO.ByteString.Lazy: elem :: Word8 -> ByteString -> Bool
+ RIO.ByteString.Lazy: elemIndex :: Word8 -> ByteString -> Maybe Int64
+ RIO.ByteString.Lazy: elemIndexEnd :: Word8 -> ByteString -> Maybe Int64
+ RIO.ByteString.Lazy: elemIndices :: Word8 -> ByteString -> [Int64]
+ RIO.ByteString.Lazy: empty :: ByteString
+ RIO.ByteString.Lazy: filter :: (Word8 -> Bool) -> ByteString -> ByteString
+ RIO.ByteString.Lazy: find :: (Word8 -> Bool) -> ByteString -> Maybe Word8
+ RIO.ByteString.Lazy: findIndex :: (Word8 -> Bool) -> ByteString -> Maybe Int64
+ RIO.ByteString.Lazy: findIndices :: (Word8 -> Bool) -> ByteString -> [Int64]
+ RIO.ByteString.Lazy: foldl :: () => (a -> Word8 -> a) -> a -> ByteString -> a
+ RIO.ByteString.Lazy: foldl' :: () => (a -> Word8 -> a) -> a -> ByteString -> a
+ RIO.ByteString.Lazy: foldlChunks :: () => (a -> ByteString -> a) -> a -> ByteString -> a
+ RIO.ByteString.Lazy: foldr :: () => (Word8 -> a -> a) -> a -> ByteString -> a
+ RIO.ByteString.Lazy: foldrChunks :: () => (ByteString -> a -> a) -> a -> ByteString -> a
+ RIO.ByteString.Lazy: fromChunks :: [ByteString] -> ByteString
+ RIO.ByteString.Lazy: fromStrict :: ByteString -> ByteString
+ RIO.ByteString.Lazy: getContents :: MonadIO m => m LByteString
+ RIO.ByteString.Lazy: group :: ByteString -> [ByteString]
+ RIO.ByteString.Lazy: groupBy :: (Word8 -> Word8 -> Bool) -> ByteString -> [ByteString]
+ RIO.ByteString.Lazy: hGet :: MonadIO m => Handle -> Int -> m LByteString
+ RIO.ByteString.Lazy: hGetContents :: MonadIO m => Handle -> m LByteString
+ RIO.ByteString.Lazy: hGetNonBlocking :: MonadIO m => Handle -> Int -> m LByteString
+ RIO.ByteString.Lazy: hPut :: MonadIO m => Handle -> LByteString -> m ()
+ RIO.ByteString.Lazy: hPutNonBlocking :: MonadIO m => Handle -> LByteString -> m LByteString
+ RIO.ByteString.Lazy: hPutStr :: MonadIO m => Handle -> LByteString -> m ()
+ RIO.ByteString.Lazy: index :: ByteString -> Int64 -> Word8
+ RIO.ByteString.Lazy: infixl 5 `snoc`
+ RIO.ByteString.Lazy: infixr 5 `cons'`
+ RIO.ByteString.Lazy: inits :: ByteString -> [ByteString]
+ RIO.ByteString.Lazy: interact :: MonadIO m => (LByteString -> LByteString) -> m ()
+ RIO.ByteString.Lazy: intercalate :: ByteString -> [ByteString] -> ByteString
+ RIO.ByteString.Lazy: intersperse :: Word8 -> ByteString -> ByteString
+ RIO.ByteString.Lazy: isPrefixOf :: ByteString -> ByteString -> Bool
+ RIO.ByteString.Lazy: isSuffixOf :: ByteString -> ByteString -> Bool
+ RIO.ByteString.Lazy: iterate :: (Word8 -> Word8) -> Word8 -> ByteString
+ RIO.ByteString.Lazy: length :: ByteString -> Int64
+ RIO.ByteString.Lazy: map :: (Word8 -> Word8) -> ByteString -> ByteString
+ RIO.ByteString.Lazy: mapAccumL :: () => (acc -> Word8 -> (acc, Word8)) -> acc -> ByteString -> (acc, ByteString)
+ RIO.ByteString.Lazy: mapAccumR :: () => (acc -> Word8 -> (acc, Word8)) -> acc -> ByteString -> (acc, ByteString)
+ RIO.ByteString.Lazy: notElem :: Word8 -> ByteString -> Bool
+ RIO.ByteString.Lazy: null :: ByteString -> Bool
+ RIO.ByteString.Lazy: pack :: [Word8] -> ByteString
+ RIO.ByteString.Lazy: partition :: (Word8 -> Bool) -> ByteString -> (ByteString, ByteString)
+ RIO.ByteString.Lazy: putStr :: MonadIO m => LByteString -> m ()
+ RIO.ByteString.Lazy: putStrLn :: MonadIO m => LByteString -> m ()
+ RIO.ByteString.Lazy: readFile :: MonadIO m => FilePath -> m LByteString
+ RIO.ByteString.Lazy: repeat :: Word8 -> ByteString
+ RIO.ByteString.Lazy: replicate :: Int64 -> Word8 -> ByteString
+ RIO.ByteString.Lazy: reverse :: ByteString -> ByteString
+ RIO.ByteString.Lazy: scanl :: (Word8 -> Word8 -> Word8) -> Word8 -> ByteString -> ByteString
+ RIO.ByteString.Lazy: singleton :: Word8 -> ByteString
+ RIO.ByteString.Lazy: snoc :: ByteString -> Word8 -> ByteString
+ RIO.ByteString.Lazy: span :: (Word8 -> Bool) -> ByteString -> (ByteString, ByteString)
+ RIO.ByteString.Lazy: split :: Word8 -> ByteString -> [ByteString]
+ RIO.ByteString.Lazy: splitAt :: Int64 -> ByteString -> (ByteString, ByteString)
+ RIO.ByteString.Lazy: splitWith :: (Word8 -> Bool) -> ByteString -> [ByteString]
+ RIO.ByteString.Lazy: stripPrefix :: ByteString -> ByteString -> Maybe ByteString
+ RIO.ByteString.Lazy: stripSuffix :: ByteString -> ByteString -> Maybe ByteString
+ RIO.ByteString.Lazy: tails :: ByteString -> [ByteString]
+ RIO.ByteString.Lazy: take :: Int64 -> ByteString -> ByteString
+ RIO.ByteString.Lazy: takeWhile :: (Word8 -> Bool) -> ByteString -> ByteString
+ RIO.ByteString.Lazy: toChunks :: ByteString -> [ByteString]
+ RIO.ByteString.Lazy: toStrict :: ByteString -> ByteString
+ RIO.ByteString.Lazy: transpose :: [ByteString] -> [ByteString]
+ RIO.ByteString.Lazy: uncons :: ByteString -> Maybe (Word8, ByteString)
+ RIO.ByteString.Lazy: unfoldr :: () => (a -> Maybe (Word8, a)) -> a -> ByteString
+ RIO.ByteString.Lazy: unpack :: ByteString -> [Word8]
+ RIO.ByteString.Lazy: unsnoc :: ByteString -> Maybe (ByteString, Word8)
+ RIO.ByteString.Lazy: unzip :: [(Word8, Word8)] -> (ByteString, ByteString)
+ RIO.ByteString.Lazy: writeFile :: MonadIO m => FilePath -> LByteString -> m ()
+ RIO.ByteString.Lazy: zip :: ByteString -> ByteString -> [(Word8, Word8)]
+ RIO.ByteString.Lazy: zipWith :: () => (Word8 -> Word8 -> a) -> ByteString -> ByteString -> [a]
+ RIO.ByteString.Lazy.Partial: foldl1 :: (Word8 -> Word8 -> Word8) -> ByteString -> Word8
+ RIO.ByteString.Lazy.Partial: foldl1' :: (Word8 -> Word8 -> Word8) -> ByteString -> Word8
+ RIO.ByteString.Lazy.Partial: foldr1 :: (Word8 -> Word8 -> Word8) -> ByteString -> Word8
+ RIO.ByteString.Lazy.Partial: head :: ByteString -> Word8
+ RIO.ByteString.Lazy.Partial: init :: ByteString -> ByteString
+ RIO.ByteString.Lazy.Partial: last :: ByteString -> Word8
+ RIO.ByteString.Lazy.Partial: maximum :: ByteString -> Word8
+ RIO.ByteString.Lazy.Partial: minimum :: ByteString -> Word8
+ RIO.ByteString.Lazy.Partial: tail :: ByteString -> ByteString
+ RIO.ByteString.Partial: foldl1 :: (Word8 -> Word8 -> Word8) -> ByteString -> Word8
+ RIO.ByteString.Partial: foldl1' :: (Word8 -> Word8 -> Word8) -> ByteString -> Word8
+ RIO.ByteString.Partial: foldr1 :: (Word8 -> Word8 -> Word8) -> ByteString -> Word8
+ RIO.ByteString.Partial: foldr1' :: (Word8 -> Word8 -> Word8) -> ByteString -> Word8
+ RIO.ByteString.Partial: head :: ByteString -> Word8
+ RIO.ByteString.Partial: init :: ByteString -> ByteString
+ RIO.ByteString.Partial: last :: ByteString -> Word8
+ RIO.ByteString.Partial: maximum :: ByteString -> Word8
+ RIO.ByteString.Partial: minimum :: ByteString -> Word8
+ RIO.ByteString.Partial: tail :: ByteString -> ByteString
+ RIO.Char: ClosePunctuation :: GeneralCategory
+ RIO.Char: ConnectorPunctuation :: GeneralCategory
+ RIO.Char: Control :: GeneralCategory
+ RIO.Char: CurrencySymbol :: GeneralCategory
+ RIO.Char: DashPunctuation :: GeneralCategory
+ RIO.Char: DecimalNumber :: GeneralCategory
+ RIO.Char: EnclosingMark :: GeneralCategory
+ RIO.Char: FinalQuote :: GeneralCategory
+ RIO.Char: Format :: GeneralCategory
+ RIO.Char: InitialQuote :: GeneralCategory
+ RIO.Char: LetterNumber :: GeneralCategory
+ RIO.Char: LineSeparator :: GeneralCategory
+ RIO.Char: LowercaseLetter :: GeneralCategory
+ RIO.Char: MathSymbol :: GeneralCategory
+ RIO.Char: ModifierLetter :: GeneralCategory
+ RIO.Char: ModifierSymbol :: GeneralCategory
+ RIO.Char: NonSpacingMark :: GeneralCategory
+ RIO.Char: NotAssigned :: GeneralCategory
+ RIO.Char: OpenPunctuation :: GeneralCategory
+ RIO.Char: OtherLetter :: GeneralCategory
+ RIO.Char: OtherNumber :: GeneralCategory
+ RIO.Char: OtherPunctuation :: GeneralCategory
+ RIO.Char: OtherSymbol :: GeneralCategory
+ RIO.Char: ParagraphSeparator :: GeneralCategory
+ RIO.Char: PrivateUse :: GeneralCategory
+ RIO.Char: Space :: GeneralCategory
+ RIO.Char: SpacingCombiningMark :: GeneralCategory
+ RIO.Char: Surrogate :: GeneralCategory
+ RIO.Char: TitlecaseLetter :: GeneralCategory
+ RIO.Char: UppercaseLetter :: GeneralCategory
+ RIO.Char: data Char :: *
+ RIO.Char: data GeneralCategory :: *
+ RIO.Char: generalCategory :: Char -> GeneralCategory
+ RIO.Char: isAlpha :: Char -> Bool
+ RIO.Char: isAlphaNum :: Char -> Bool
+ RIO.Char: isAscii :: Char -> Bool
+ RIO.Char: isAsciiLower :: Char -> Bool
+ RIO.Char: isAsciiUpper :: Char -> Bool
+ RIO.Char: isControl :: Char -> Bool
+ RIO.Char: isDigit :: Char -> Bool
+ RIO.Char: isHexDigit :: Char -> Bool
+ RIO.Char: isLatin1 :: Char -> Bool
+ RIO.Char: isLetter :: Char -> Bool
+ RIO.Char: isLower :: Char -> Bool
+ RIO.Char: isMark :: Char -> Bool
+ RIO.Char: isNumber :: Char -> Bool
+ RIO.Char: isOctDigit :: Char -> Bool
+ RIO.Char: isPrint :: Char -> Bool
+ RIO.Char: isPunctuation :: Char -> Bool
+ RIO.Char: isSeparator :: Char -> Bool
+ RIO.Char: isSpace :: Char -> Bool
+ RIO.Char: isSymbol :: Char -> Bool
+ RIO.Char: isUpper :: Char -> Bool
+ RIO.Char: lexLitChar :: ReadS String
+ RIO.Char: ord :: Char -> Int
+ RIO.Char: readLitChar :: ReadS Char
+ RIO.Char: showLitChar :: Char -> ShowS
+ RIO.Char: toLower :: Char -> Char
+ RIO.Char: toTitle :: Char -> Char
+ RIO.Char: toUpper :: Char -> Char
+ RIO.Char.Partial: chr :: Int -> Char
+ RIO.Char.Partial: digitToInt :: Char -> Int
+ RIO.Char.Partial: intToDigit :: Int -> Char
+ RIO.FilePath: getSearchPath :: MonadIO m => m [FilePath]
+ RIO.HashMap: adjust :: (Eq k, Hashable k) => (v -> v) -> k -> HashMap k v -> HashMap k v
+ RIO.HashMap: alter :: (Eq k, Hashable k) => (Maybe v -> Maybe v) -> k -> HashMap k v -> HashMap k v
+ RIO.HashMap: data HashMap k v :: * -> * -> *
+ RIO.HashMap: delete :: (Eq k, Hashable k) => k -> HashMap k v -> HashMap k v
+ RIO.HashMap: difference :: (Eq k, Hashable k) => HashMap k v -> HashMap k w -> HashMap k v
+ RIO.HashMap: differenceWith :: (Eq k, Hashable k) => (v -> w -> Maybe v) -> HashMap k v -> HashMap k w -> HashMap k v
+ RIO.HashMap: elems :: () => HashMap k v -> [v]
+ RIO.HashMap: empty :: () => HashMap k v
+ RIO.HashMap: filter :: () => (v -> Bool) -> HashMap k v -> HashMap k v
+ RIO.HashMap: filterWithKey :: () => (k -> v -> Bool) -> HashMap k v -> HashMap k v
+ RIO.HashMap: foldl' :: () => (a -> v -> a) -> a -> HashMap k v -> a
+ RIO.HashMap: foldlWithKey' :: () => (a -> k -> v -> a) -> a -> HashMap k v -> a
+ RIO.HashMap: foldr :: () => (v -> a -> a) -> a -> HashMap k v -> a
+ RIO.HashMap: foldrWithKey :: () => (k -> v -> a -> a) -> a -> HashMap k v -> a
+ RIO.HashMap: fromList :: (Eq k, Hashable k) => [(k, v)] -> HashMap k v
+ RIO.HashMap: fromListWith :: (Eq k, Hashable k) => (v -> v -> v) -> [(k, v)] -> HashMap k v
+ RIO.HashMap: insert :: (Eq k, Hashable k) => k -> v -> HashMap k v -> HashMap k v
+ RIO.HashMap: insertWith :: (Eq k, Hashable k) => (v -> v -> v) -> k -> v -> HashMap k v -> HashMap k v
+ RIO.HashMap: intersection :: (Eq k, Hashable k) => HashMap k v -> HashMap k w -> HashMap k v
+ RIO.HashMap: intersectionWith :: (Eq k, Hashable k) => (v1 -> v2 -> v3) -> HashMap k v1 -> HashMap k v2 -> HashMap k v3
+ RIO.HashMap: intersectionWithKey :: (Eq k, Hashable k) => (k -> v1 -> v2 -> v3) -> HashMap k v1 -> HashMap k v2 -> HashMap k v3
+ RIO.HashMap: keys :: () => HashMap k v -> [k]
+ RIO.HashMap: lookup :: (Eq k, Hashable k) => k -> HashMap k v -> Maybe v
+ RIO.HashMap: lookupDefault :: (Eq k, Hashable k) => v -> k -> HashMap k v -> v
+ RIO.HashMap: map :: () => (v1 -> v2) -> HashMap k v1 -> HashMap k v2
+ RIO.HashMap: mapMaybe :: () => (v1 -> Maybe v2) -> HashMap k v1 -> HashMap k v2
+ RIO.HashMap: mapMaybeWithKey :: () => (k -> v1 -> Maybe v2) -> HashMap k v1 -> HashMap k v2
+ RIO.HashMap: mapWithKey :: () => (k -> v1 -> v2) -> HashMap k v1 -> HashMap k v2
+ RIO.HashMap: member :: (Eq k, Hashable k) => k -> HashMap k a -> Bool
+ RIO.HashMap: null :: () => HashMap k v -> Bool
+ RIO.HashMap: singleton :: Hashable k => k -> v -> HashMap k v
+ RIO.HashMap: size :: () => HashMap k v -> Int
+ RIO.HashMap: toList :: () => HashMap k v -> [(k, v)]
+ RIO.HashMap: traverseWithKey :: Applicative f => (k -> v1 -> f v2) -> HashMap k v1 -> f HashMap k v2
+ RIO.HashMap: union :: (Eq k, Hashable k) => HashMap k v -> HashMap k v -> HashMap k v
+ RIO.HashMap: unionWith :: (Eq k, Hashable k) => (v -> v -> v) -> HashMap k v -> HashMap k v -> HashMap k v
+ RIO.HashMap: unionWithKey :: (Eq k, Hashable k) => (k -> v -> v -> v) -> HashMap k v -> HashMap k v -> HashMap k v
+ RIO.HashMap: unions :: (Eq k, Hashable k) => [HashMap k v] -> HashMap k v
+ RIO.HashMap: update :: (Eq k, Hashable k) => (a -> Maybe a) -> k -> HashMap k a -> HashMap k a
+ RIO.HashMap.Partial: (!) :: (Eq k, Hashable k) => HashMap k v -> k -> v
+ RIO.HashMap.Partial: infixl 9 !
+ RIO.HashSet: data HashSet a :: * -> *
+ RIO.HashSet: delete :: (Eq a, Hashable a) => a -> HashSet a -> HashSet a
+ RIO.HashSet: difference :: (Eq a, Hashable a) => HashSet a -> HashSet a -> HashSet a
+ RIO.HashSet: empty :: () => HashSet a
+ RIO.HashSet: filter :: () => (a -> Bool) -> HashSet a -> HashSet a
+ RIO.HashSet: foldl' :: () => (a -> b -> a) -> a -> HashSet b -> a
+ RIO.HashSet: foldr :: () => (b -> a -> a) -> a -> HashSet b -> a
+ RIO.HashSet: fromList :: (Eq a, Hashable a) => [a] -> HashSet a
+ RIO.HashSet: fromMap :: () => HashMap a () -> HashSet a
+ RIO.HashSet: insert :: (Eq a, Hashable a) => a -> HashSet a -> HashSet a
+ RIO.HashSet: intersection :: (Eq a, Hashable a) => HashSet a -> HashSet a -> HashSet a
+ RIO.HashSet: map :: (Hashable b, Eq b) => (a -> b) -> HashSet a -> HashSet b
+ RIO.HashSet: member :: (Eq a, Hashable a) => a -> HashSet a -> Bool
+ RIO.HashSet: null :: () => HashSet a -> Bool
+ RIO.HashSet: singleton :: Hashable a => a -> HashSet a
+ RIO.HashSet: size :: () => HashSet a -> Int
+ RIO.HashSet: toList :: () => HashSet a -> [a]
+ RIO.HashSet: toMap :: () => HashSet a -> HashMap a ()
+ RIO.HashSet: union :: (Eq a, Hashable a) => HashSet a -> HashSet a -> HashSet a
+ RIO.HashSet: unions :: (Eq a, Hashable a) => [HashSet a] -> HashSet a
+ RIO.List: (++) :: () => [a] -> [a] -> [a]
+ RIO.List: (\\) :: Eq a => [a] -> [a] -> [a]
+ RIO.List: all :: Foldable t => (a -> Bool) -> t a -> Bool
+ RIO.List: and :: Foldable t => t Bool -> Bool
+ RIO.List: any :: Foldable t => (a -> Bool) -> t a -> Bool
+ RIO.List: break :: () => (a -> Bool) -> [a] -> ([a], [a])
+ RIO.List: concat :: Foldable t => t [a] -> [a]
+ RIO.List: concatMap :: Foldable t => (a -> [b]) -> t a -> [b]
+ RIO.List: cycle :: () => [a] -> [a]
+ RIO.List: delete :: Eq a => a -> [a] -> [a]
+ RIO.List: deleteBy :: () => (a -> a -> Bool) -> a -> [a] -> [a]
+ RIO.List: deleteFirstsBy :: () => (a -> a -> Bool) -> [a] -> [a] -> [a]
+ RIO.List: drop :: () => Int -> [a] -> [a]
+ RIO.List: dropWhile :: () => (a -> Bool) -> [a] -> [a]
+ RIO.List: dropWhileEnd :: () => (a -> Bool) -> [a] -> [a]
+ RIO.List: elem :: Foldable t => forall a. Eq a => a -> t a -> Bool
+ RIO.List: elemIndex :: Eq a => a -> [a] -> Maybe Int
+ RIO.List: elemIndices :: Eq a => a -> [a] -> [Int]
+ RIO.List: filter :: () => (a -> Bool) -> [a] -> [a]
+ RIO.List: find :: Foldable t => (a -> Bool) -> t a -> Maybe a
+ RIO.List: findIndex :: () => (a -> Bool) -> [a] -> Maybe Int
+ RIO.List: findIndices :: () => (a -> Bool) -> [a] -> [Int]
+ RIO.List: foldl :: Foldable t => forall b a. () => (b -> a -> b) -> b -> t a -> b
+ RIO.List: foldl' :: Foldable t => forall b a. () => (b -> a -> b) -> b -> t a -> b
+ RIO.List: foldr :: Foldable t => forall a b. () => (a -> b -> b) -> b -> t a -> b
+ RIO.List: genericDrop :: Integral i => i -> [a] -> [a]
+ RIO.List: genericIndex :: Integral i => [a] -> i -> a
+ RIO.List: genericLength :: Num i => [a] -> i
+ RIO.List: genericReplicate :: Integral i => i -> a -> [a]
+ RIO.List: genericSplitAt :: Integral i => i -> [a] -> ([a], [a])
+ RIO.List: genericTake :: Integral i => i -> [a] -> [a]
+ RIO.List: group :: Eq a => [a] -> [[a]]
+ RIO.List: groupBy :: () => (a -> a -> Bool) -> [a] -> [[a]]
+ RIO.List: infix 4 `notElem`
+ RIO.List: infix 5 \\
+ RIO.List: infixr 5 ++
+ RIO.List: inits :: () => [a] -> [[a]]
+ RIO.List: insert :: Ord a => a -> [a] -> [a]
+ RIO.List: insertBy :: () => (a -> a -> Ordering) -> a -> [a] -> [a]
+ RIO.List: intercalate :: () => [a] -> [[a]] -> [a]
+ RIO.List: intersect :: Eq a => [a] -> [a] -> [a]
+ RIO.List: intersectBy :: () => (a -> a -> Bool) -> [a] -> [a] -> [a]
+ RIO.List: intersperse :: () => a -> [a] -> [a]
+ RIO.List: isInfixOf :: Eq a => [a] -> [a] -> Bool
+ RIO.List: isPrefixOf :: Eq a => [a] -> [a] -> Bool
+ RIO.List: isSubsequenceOf :: Eq a => [a] -> [a] -> Bool
+ RIO.List: isSuffixOf :: Eq a => [a] -> [a] -> Bool
+ RIO.List: iterate :: () => (a -> a) -> a -> [a]
+ RIO.List: length :: Foldable t => forall a. () => t a -> Int
+ RIO.List: lines :: String -> [String]
+ RIO.List: linesCR :: String -> [String]
+ RIO.List: lookup :: Eq a => a -> [(a, b)] -> Maybe b
+ RIO.List: map :: () => (a -> b) -> [a] -> [b]
+ RIO.List: mapAccumL :: Traversable t => (a -> b -> (a, c)) -> a -> t b -> (a, t c)
+ RIO.List: mapAccumR :: Traversable t => (a -> b -> (a, c)) -> a -> t b -> (a, t c)
+ RIO.List: maximumBy :: Foldable t => (a -> a -> Ordering) -> t a -> a
+ RIO.List: minimumBy :: Foldable t => (a -> a -> Ordering) -> t a -> a
+ RIO.List: notElem :: (Foldable t, Eq a) => a -> t a -> Bool
+ RIO.List: nub :: Eq a => [a] -> [a]
+ RIO.List: nubBy :: () => (a -> a -> Bool) -> [a] -> [a]
+ RIO.List: null :: Foldable t => forall a. () => t a -> Bool
+ RIO.List: or :: Foldable t => t Bool -> Bool
+ RIO.List: partition :: () => (a -> Bool) -> [a] -> ([a], [a])
+ RIO.List: permutations :: () => [a] -> [[a]]
+ RIO.List: product :: Foldable t => forall a. Num a => t a -> a
+ RIO.List: repeat :: () => a -> [a]
+ RIO.List: replicate :: () => Int -> a -> [a]
+ RIO.List: reverse :: () => [a] -> [a]
+ RIO.List: scanl :: () => (b -> a -> b) -> b -> [a] -> [b]
+ RIO.List: scanl' :: () => (b -> a -> b) -> b -> [a] -> [b]
+ RIO.List: scanr :: () => (a -> b -> b) -> b -> [a] -> [b]
+ RIO.List: sort :: Ord a => [a] -> [a]
+ RIO.List: sortBy :: () => (a -> a -> Ordering) -> [a] -> [a]
+ RIO.List: sortOn :: Ord b => (a -> b) -> [a] -> [a]
+ RIO.List: span :: () => (a -> Bool) -> [a] -> ([a], [a])
+ RIO.List: splitAt :: () => Int -> [a] -> ([a], [a])
+ RIO.List: stripPrefix :: Eq a => [a] -> [a] -> Maybe [a]
+ RIO.List: subsequences :: () => [a] -> [[a]]
+ RIO.List: sum :: Foldable t => forall a. Num a => t a -> a
+ RIO.List: tails :: () => [a] -> [[a]]
+ RIO.List: take :: () => Int -> [a] -> [a]
+ RIO.List: takeWhile :: () => (a -> Bool) -> [a] -> [a]
+ RIO.List: transpose :: () => [[a]] -> [[a]]
+ RIO.List: uncons :: () => [a] -> Maybe (a, [a])
+ RIO.List: unfoldr :: () => (b -> Maybe (a, b)) -> b -> [a]
+ RIO.List: union :: Eq a => [a] -> [a] -> [a]
+ RIO.List: unionBy :: () => (a -> a -> Bool) -> [a] -> [a] -> [a]
+ RIO.List: unlines :: [String] -> String
+ RIO.List: unwords :: [String] -> String
+ RIO.List: unzip :: () => [(a, b)] -> ([a], [b])
+ RIO.List: unzip3 :: () => [(a, b, c)] -> ([a], [b], [c])
+ RIO.List: unzip4 :: () => [(a, b, c, d)] -> ([a], [b], [c], [d])
+ RIO.List: unzip5 :: () => [(a, b, c, d, e)] -> ([a], [b], [c], [d], [e])
+ RIO.List: unzip6 :: () => [(a, b, c, d, e, f)] -> ([a], [b], [c], [d], [e], [f])
+ RIO.List: unzip7 :: () => [(a, b, c, d, e, f, g)] -> ([a], [b], [c], [d], [e], [f], [g])
+ RIO.List: words :: String -> [String]
+ RIO.List: zip :: () => [a] -> [b] -> [(a, b)]
+ RIO.List: zip3 :: () => [a] -> [b] -> [c] -> [(a, b, c)]
+ RIO.List: zip4 :: () => [a] -> [b] -> [c] -> [d] -> [(a, b, c, d)]
+ RIO.List: zip5 :: () => [a] -> [b] -> [c] -> [d] -> [e] -> [(a, b, c, d, e)]
+ RIO.List: zip6 :: () => [a] -> [b] -> [c] -> [d] -> [e] -> [f] -> [(a, b, c, d, e, f)]
+ RIO.List: zip7 :: () => [a] -> [b] -> [c] -> [d] -> [e] -> [f] -> [g] -> [(a, b, c, d, e, f, g)]
+ RIO.List: zipWith :: () => (a -> b -> c) -> [a] -> [b] -> [c]
+ RIO.List: zipWith3 :: () => (a -> b -> c -> d) -> [a] -> [b] -> [c] -> [d]
+ RIO.List: zipWith4 :: () => (a -> b -> c -> d -> e) -> [a] -> [b] -> [c] -> [d] -> [e]
+ RIO.List: zipWith5 :: () => (a -> b -> c -> d -> e -> f) -> [a] -> [b] -> [c] -> [d] -> [e] -> [f]
+ RIO.List: zipWith6 :: () => (a -> b -> c -> d -> e -> f -> g) -> [a] -> [b] -> [c] -> [d] -> [e] -> [f] -> [g]
+ RIO.List: zipWith7 :: () => (a -> b -> c -> d -> e -> f -> g -> h) -> [a] -> [b] -> [c] -> [d] -> [e] -> [f] -> [g] -> [h]
+ RIO.List.Partial: (!!) :: () => [a] -> Int -> a
+ RIO.List.Partial: foldl1 :: Foldable t => forall a. () => (a -> a -> a) -> t a -> a
+ RIO.List.Partial: foldl1' :: () => (a -> a -> a) -> [a] -> a
+ RIO.List.Partial: foldr1 :: Foldable t => forall a. () => (a -> a -> a) -> t a -> a
+ RIO.List.Partial: head :: () => [a] -> a
+ RIO.List.Partial: infixl 9 !!
+ RIO.List.Partial: init :: () => [a] -> [a]
+ RIO.List.Partial: last :: () => [a] -> a
+ RIO.List.Partial: maximum :: Foldable t => forall a. Ord a => t a -> a
+ RIO.List.Partial: minimum :: Foldable t => forall a. Ord a => t a -> a
+ RIO.List.Partial: scanl1 :: () => (a -> a -> a) -> [a] -> [a]
+ RIO.List.Partial: scanr1 :: () => (a -> a -> a) -> [a] -> [a]
+ RIO.List.Partial: tail :: () => [a] -> [a]
+ RIO.Map: (!?) :: Ord k => Map k a -> k -> Maybe a
+ RIO.Map: (\\) :: Ord k => Map k a -> Map k b -> Map k a
+ RIO.Map: adjust :: Ord k => (a -> a) -> k -> Map k a -> Map k a
+ RIO.Map: adjustWithKey :: Ord k => (k -> a -> a) -> k -> Map k a -> Map k a
+ RIO.Map: alter :: Ord k => (Maybe a -> Maybe a) -> k -> Map k a -> Map k a
+ RIO.Map: alterF :: (Functor f, Ord k) => (Maybe a -> f Maybe a) -> k -> Map k a -> f Map k a
+ RIO.Map: assocs :: () => Map k a -> [(k, a)]
+ RIO.Map: data Map k a :: * -> * -> *
+ RIO.Map: delete :: Ord k => k -> Map k a -> Map k a
+ RIO.Map: deleteAt :: () => Int -> Map k a -> Map k a
+ RIO.Map: deleteMax :: () => Map k a -> Map k a
+ RIO.Map: deleteMin :: () => Map k a -> Map k a
+ RIO.Map: difference :: Ord k => Map k a -> Map k b -> Map k a
+ RIO.Map: differenceWith :: Ord k => (a -> b -> Maybe a) -> Map k a -> Map k b -> Map k a
+ RIO.Map: differenceWithKey :: Ord k => (k -> a -> b -> Maybe a) -> Map k a -> Map k b -> Map k a
+ RIO.Map: drop :: () => Int -> Map k a -> Map k a
+ RIO.Map: dropWhileAntitone :: () => (k -> Bool) -> Map k a -> Map k a
+ RIO.Map: elemAt :: () => Int -> Map k a -> (k, a)
+ RIO.Map: elems :: () => Map k a -> [a]
+ RIO.Map: empty :: () => Map k a
+ RIO.Map: filter :: () => (a -> Bool) -> Map k a -> Map k a
+ RIO.Map: filterWithKey :: () => (k -> a -> Bool) -> Map k a -> Map k a
+ RIO.Map: findWithDefault :: Ord k => a -> k -> Map k a -> a
+ RIO.Map: foldMapWithKey :: Monoid m => (k -> a -> m) -> Map k a -> m
+ RIO.Map: foldl :: () => (a -> b -> a) -> a -> Map k b -> a
+ RIO.Map: foldl' :: () => (a -> b -> a) -> a -> Map k b -> a
+ RIO.Map: foldlWithKey :: () => (a -> k -> b -> a) -> a -> Map k b -> a
+ RIO.Map: foldlWithKey' :: () => (a -> k -> b -> a) -> a -> Map k b -> a
+ RIO.Map: foldr :: () => (a -> b -> b) -> b -> Map k a -> b
+ RIO.Map: foldr' :: () => (a -> b -> b) -> b -> Map k a -> b
+ RIO.Map: foldrWithKey :: () => (k -> a -> b -> b) -> b -> Map k a -> b
+ RIO.Map: foldrWithKey' :: () => (k -> a -> b -> b) -> b -> Map k a -> b
+ RIO.Map: fromList :: Ord k => [(k, a)] -> Map k a
+ RIO.Map: fromListWith :: Ord k => (a -> a -> a) -> [(k, a)] -> Map k a
+ RIO.Map: fromListWithKey :: Ord k => (k -> a -> a -> a) -> [(k, a)] -> Map k a
+ RIO.Map: fromSet :: () => (k -> a) -> Set k -> Map k a
+ RIO.Map: infixl 9 \\
+ RIO.Map: insert :: Ord k => k -> a -> Map k a -> Map k a
+ RIO.Map: insertLookupWithKey :: Ord k => (k -> a -> a -> a) -> k -> a -> Map k a -> (Maybe a, Map k a)
+ RIO.Map: insertWith :: Ord k => (a -> a -> a) -> k -> a -> Map k a -> Map k a
+ RIO.Map: insertWithKey :: Ord k => (k -> a -> a -> a) -> k -> a -> Map k a -> Map k a
+ RIO.Map: intersection :: Ord k => Map k a -> Map k b -> Map k a
+ RIO.Map: intersectionWith :: Ord k => (a -> b -> c) -> Map k a -> Map k b -> Map k c
+ RIO.Map: intersectionWithKey :: Ord k => (k -> a -> b -> c) -> Map k a -> Map k b -> Map k c
+ RIO.Map: isProperSubmapOf :: (Ord k, Eq a) => Map k a -> Map k a -> Bool
+ RIO.Map: isProperSubmapOfBy :: Ord k => (a -> b -> Bool) -> Map k a -> Map k b -> Bool
+ RIO.Map: isSubmapOf :: (Ord k, Eq a) => Map k a -> Map k a -> Bool
+ RIO.Map: isSubmapOfBy :: Ord k => (a -> b -> Bool) -> Map k a -> Map k b -> Bool
+ RIO.Map: keys :: () => Map k a -> [k]
+ RIO.Map: keysSet :: () => Map k a -> Set k
+ RIO.Map: lookup :: Ord k => k -> Map k a -> Maybe a
+ RIO.Map: lookupGE :: Ord k => k -> Map k v -> Maybe (k, v)
+ RIO.Map: lookupGT :: Ord k => k -> Map k v -> Maybe (k, v)
+ RIO.Map: lookupIndex :: Ord k => k -> Map k a -> Maybe Int
+ RIO.Map: lookupLE :: Ord k => k -> Map k v -> Maybe (k, v)
+ RIO.Map: lookupLT :: Ord k => k -> Map k v -> Maybe (k, v)
+ RIO.Map: lookupMax :: () => Map k a -> Maybe (k, a)
+ RIO.Map: lookupMin :: () => Map k a -> Maybe (k, a)
+ RIO.Map: map :: () => (a -> b) -> Map k a -> Map k b
+ RIO.Map: mapAccum :: () => (a -> b -> (a, c)) -> a -> Map k b -> (a, Map k c)
+ RIO.Map: mapAccumRWithKey :: () => (a -> k -> b -> (a, c)) -> a -> Map k b -> (a, Map k c)
+ RIO.Map: mapAccumWithKey :: () => (a -> k -> b -> (a, c)) -> a -> Map k b -> (a, Map k c)
+ RIO.Map: mapEither :: () => (a -> Either b c) -> Map k a -> (Map k b, Map k c)
+ RIO.Map: mapEitherWithKey :: () => (k -> a -> Either b c) -> Map k a -> (Map k b, Map k c)
+ RIO.Map: mapKeys :: Ord k2 => (k1 -> k2) -> Map k1 a -> Map k2 a
+ RIO.Map: mapKeysWith :: Ord k2 => (a -> a -> a) -> (k1 -> k2) -> Map k1 a -> Map k2 a
+ RIO.Map: mapMaybe :: () => (a -> Maybe b) -> Map k a -> Map k b
+ RIO.Map: mapMaybeWithKey :: () => (k -> a -> Maybe b) -> Map k a -> Map k b
+ RIO.Map: mapWithKey :: () => (k -> a -> b) -> Map k a -> Map k b
+ RIO.Map: maxView :: () => Map k a -> Maybe (a, Map k a)
+ RIO.Map: maxViewWithKey :: () => Map k a -> Maybe ((k, a), Map k a)
+ RIO.Map: member :: Ord k => k -> Map k a -> Bool
+ RIO.Map: mergeWithKey :: Ord k => (k -> a -> b -> Maybe c) -> (Map k a -> Map k c) -> (Map k b -> Map k c) -> Map k a -> Map k b -> Map k c
+ RIO.Map: minView :: () => Map k a -> Maybe (a, Map k a)
+ RIO.Map: minViewWithKey :: () => Map k a -> Maybe ((k, a), Map k a)
+ RIO.Map: notMember :: Ord k => k -> Map k a -> Bool
+ RIO.Map: null :: () => Map k a -> Bool
+ RIO.Map: partition :: () => (a -> Bool) -> Map k a -> (Map k a, Map k a)
+ RIO.Map: partitionWithKey :: () => (k -> a -> Bool) -> Map k a -> (Map k a, Map k a)
+ RIO.Map: restrictKeys :: Ord k => Map k a -> Set k -> Map k a
+ RIO.Map: showTree :: (Show k, Show a) => Map k a -> String
+ RIO.Map: showTreeWith :: () => (k -> a -> String) -> Bool -> Bool -> Map k a -> String
+ RIO.Map: singleton :: () => k -> a -> Map k a
+ RIO.Map: size :: () => Map k a -> Int
+ RIO.Map: spanAntitone :: () => (k -> Bool) -> Map k a -> (Map k a, Map k a)
+ RIO.Map: split :: Ord k => k -> Map k a -> (Map k a, Map k a)
+ RIO.Map: splitAt :: () => Int -> Map k a -> (Map k a, Map k a)
+ RIO.Map: splitLookup :: Ord k => k -> Map k a -> (Map k a, Maybe a, Map k a)
+ RIO.Map: splitRoot :: () => Map k b -> [Map k b]
+ RIO.Map: take :: () => Int -> Map k a -> Map k a
+ RIO.Map: takeWhileAntitone :: () => (k -> Bool) -> Map k a -> Map k a
+ RIO.Map: toList :: () => Map k a -> [(k, a)]
+ RIO.Map: traverseMaybeWithKey :: Applicative f => (k -> a -> f Maybe b) -> Map k a -> f Map k b
+ RIO.Map: traverseWithKey :: Applicative t => (k -> a -> t b) -> Map k a -> t Map k b
+ RIO.Map: union :: Ord k => Map k a -> Map k a -> Map k a
+ RIO.Map: unionWith :: Ord k => (a -> a -> a) -> Map k a -> Map k a -> Map k a
+ RIO.Map: unionWithKey :: Ord k => (k -> a -> a -> a) -> Map k a -> Map k a -> Map k a
+ RIO.Map: unions :: Ord k => [Map k a] -> Map k a
+ RIO.Map: unionsWith :: Ord k => (a -> a -> a) -> [Map k a] -> Map k a
+ RIO.Map: update :: Ord k => (a -> Maybe a) -> k -> Map k a -> Map k a
+ RIO.Map: updateLookupWithKey :: Ord k => (k -> a -> Maybe a) -> k -> Map k a -> (Maybe a, Map k a)
+ RIO.Map: updateMax :: () => (a -> Maybe a) -> Map k a -> Map k a
+ RIO.Map: updateMaxWithKey :: () => (k -> a -> Maybe a) -> Map k a -> Map k a
+ RIO.Map: updateMin :: () => (a -> Maybe a) -> Map k a -> Map k a
+ RIO.Map: updateMinWithKey :: () => (k -> a -> Maybe a) -> Map k a -> Map k a
+ RIO.Map: updateWithKey :: Ord k => (k -> a -> Maybe a) -> k -> Map k a -> Map k a
+ RIO.Map: valid :: Ord k => Map k a -> Bool
+ RIO.Map: withoutKeys :: Ord k => Map k a -> Set k -> Map k a
+ RIO.Map.Partial: (!) :: Ord k => Map k a -> k -> a
+ RIO.Map.Partial: deleteAt :: () => Int -> Map k a -> Map k a
+ RIO.Map.Partial: deleteFindMax :: () => Map k a -> ((k, a), Map k a)
+ RIO.Map.Partial: deleteFindMin :: () => Map k a -> ((k, a), Map k a)
+ RIO.Map.Partial: elemAt :: () => Int -> Map k a -> (k, a)
+ RIO.Map.Partial: findIndex :: Ord k => k -> Map k a -> Int
+ RIO.Map.Partial: findMax :: () => Map k a -> (k, a)
+ RIO.Map.Partial: findMin :: () => Map k a -> (k, a)
+ RIO.Map.Partial: infixl 9 !
+ RIO.Map.Partial: updateAt :: () => (k -> a -> Maybe a) -> Int -> Map k a -> Map k a
+ RIO.Map.Unchecked: fromAscList :: Eq k => [(k, a)] -> Map k a
+ RIO.Map.Unchecked: fromAscListWith :: Eq k => (a -> a -> a) -> [(k, a)] -> Map k a
+ RIO.Map.Unchecked: fromAscListWithKey :: Eq k => (k -> a -> a -> a) -> [(k, a)] -> Map k a
+ RIO.Map.Unchecked: fromDescList :: Eq k => [(k, a)] -> Map k a
+ RIO.Map.Unchecked: fromDescListWith :: Eq k => (a -> a -> a) -> [(k, a)] -> Map k a
+ RIO.Map.Unchecked: fromDescListWithKey :: Eq k => (k -> a -> a -> a) -> [(k, a)] -> Map k a
+ RIO.Map.Unchecked: fromDistinctAscList :: () => [(k, a)] -> Map k a
+ RIO.Map.Unchecked: fromDistinctDescList :: () => [(k, a)] -> Map k a
+ RIO.Map.Unchecked: mapKeysMonotonic :: () => (k1 -> k2) -> Map k1 a -> Map k2 a
+ RIO.Map.Unchecked: toAscList :: () => Map k a -> [(k, a)]
+ RIO.Map.Unchecked: toDescList :: () => Map k a -> [(k, a)]
+ RIO.Seq: (!?) :: () => Seq a -> Int -> Maybe a
+ RIO.Seq: (:<) :: a -> Seq a -> ViewL a
+ RIO.Seq: (:>) :: Seq a -> a -> ViewR a
+ RIO.Seq: (<|) :: () => a -> Seq a -> Seq a
+ RIO.Seq: (><) :: () => Seq a -> Seq a -> Seq a
+ RIO.Seq: (|>) :: () => Seq a -> a -> Seq a
+ RIO.Seq: EmptyL :: ViewL a
+ RIO.Seq: EmptyR :: ViewR a
+ RIO.Seq: adjust :: () => (a -> a) -> Int -> Seq a -> Seq a
+ RIO.Seq: adjust' :: () => (a -> a) -> Int -> Seq a -> Seq a
+ RIO.Seq: breakl :: () => (a -> Bool) -> Seq a -> (Seq a, Seq a)
+ RIO.Seq: breakr :: () => (a -> Bool) -> Seq a -> (Seq a, Seq a)
+ RIO.Seq: chunksOf :: () => Int -> Seq a -> Seq Seq a
+ RIO.Seq: cycleTaking :: () => Int -> Seq a -> Seq a
+ RIO.Seq: data Seq a :: * -> *
+ RIO.Seq: data ViewL a :: * -> *
+ RIO.Seq: data ViewR a :: * -> *
+ RIO.Seq: deleteAt :: () => Int -> Seq a -> Seq a
+ RIO.Seq: drop :: () => Int -> Seq a -> Seq a
+ RIO.Seq: dropWhileL :: () => (a -> Bool) -> Seq a -> Seq a
+ RIO.Seq: dropWhileR :: () => (a -> Bool) -> Seq a -> Seq a
+ RIO.Seq: elemIndexL :: Eq a => a -> Seq a -> Maybe Int
+ RIO.Seq: elemIndexR :: Eq a => a -> Seq a -> Maybe Int
+ RIO.Seq: elemIndicesL :: Eq a => a -> Seq a -> [Int]
+ RIO.Seq: elemIndicesR :: Eq a => a -> Seq a -> [Int]
+ RIO.Seq: empty :: () => Seq a
+ RIO.Seq: filter :: () => (a -> Bool) -> Seq a -> Seq a
+ RIO.Seq: findIndexL :: () => (a -> Bool) -> Seq a -> Maybe Int
+ RIO.Seq: findIndexR :: () => (a -> Bool) -> Seq a -> Maybe Int
+ RIO.Seq: findIndicesL :: () => (a -> Bool) -> Seq a -> [Int]
+ RIO.Seq: findIndicesR :: () => (a -> Bool) -> Seq a -> [Int]
+ RIO.Seq: foldMapWithIndex :: Monoid m => (Int -> a -> m) -> Seq a -> m
+ RIO.Seq: foldlWithIndex :: () => (b -> Int -> a -> b) -> b -> Seq a -> b
+ RIO.Seq: foldrWithIndex :: () => (Int -> a -> b -> b) -> b -> Seq a -> b
+ RIO.Seq: fromArray :: Ix i => Array i a -> Seq a
+ RIO.Seq: fromFunction :: () => Int -> (Int -> a) -> Seq a
+ RIO.Seq: fromList :: () => [a] -> Seq a
+ RIO.Seq: index :: () => Seq a -> Int -> a
+ RIO.Seq: infixl 5 |>
+ RIO.Seq: infixr 5 ><
+ RIO.Seq: inits :: () => Seq a -> Seq Seq a
+ RIO.Seq: insertAt :: () => Int -> a -> Seq a -> Seq a
+ RIO.Seq: intersperse :: () => a -> Seq a -> Seq a
+ RIO.Seq: iterateN :: () => Int -> (a -> a) -> a -> Seq a
+ RIO.Seq: length :: () => Seq a -> Int
+ RIO.Seq: lookup :: () => Int -> Seq a -> Maybe a
+ RIO.Seq: mapWithIndex :: () => (Int -> a -> b) -> Seq a -> Seq b
+ RIO.Seq: null :: () => Seq a -> Bool
+ RIO.Seq: partition :: () => (a -> Bool) -> Seq a -> (Seq a, Seq a)
+ RIO.Seq: replicate :: () => Int -> a -> Seq a
+ RIO.Seq: replicateA :: Applicative f => Int -> f a -> f Seq a
+ RIO.Seq: replicateM :: Monad m => Int -> m a -> m Seq a
+ RIO.Seq: reverse :: () => Seq a -> Seq a
+ RIO.Seq: scanl :: () => (a -> b -> a) -> a -> Seq b -> Seq a
+ RIO.Seq: scanl1 :: () => (a -> a -> a) -> Seq a -> Seq a
+ RIO.Seq: scanr :: () => (a -> b -> b) -> b -> Seq a -> Seq b
+ RIO.Seq: scanr1 :: () => (a -> a -> a) -> Seq a -> Seq a
+ RIO.Seq: singleton :: () => a -> Seq a
+ RIO.Seq: sort :: Ord a => Seq a -> Seq a
+ RIO.Seq: sortBy :: () => (a -> a -> Ordering) -> Seq a -> Seq a
+ RIO.Seq: spanl :: () => (a -> Bool) -> Seq a -> (Seq a, Seq a)
+ RIO.Seq: spanr :: () => (a -> Bool) -> Seq a -> (Seq a, Seq a)
+ RIO.Seq: splitAt :: () => Int -> Seq a -> (Seq a, Seq a)
+ RIO.Seq: tails :: () => Seq a -> Seq Seq a
+ RIO.Seq: take :: () => Int -> Seq a -> Seq a
+ RIO.Seq: takeWhileL :: () => (a -> Bool) -> Seq a -> Seq a
+ RIO.Seq: takeWhileR :: () => (a -> Bool) -> Seq a -> Seq a
+ RIO.Seq: traverseWithIndex :: Applicative f => (Int -> a -> f b) -> Seq a -> f Seq b
+ RIO.Seq: unfoldl :: () => (b -> Maybe (b, a)) -> b -> Seq a
+ RIO.Seq: unfoldr :: () => (b -> Maybe (a, b)) -> b -> Seq a
+ RIO.Seq: unstableSort :: Ord a => Seq a -> Seq a
+ RIO.Seq: unstableSortBy :: () => (a -> a -> Ordering) -> Seq a -> Seq a
+ RIO.Seq: update :: () => Int -> a -> Seq a -> Seq a
+ RIO.Seq: viewl :: () => Seq a -> ViewL a
+ RIO.Seq: viewr :: () => Seq a -> ViewR a
+ RIO.Seq: zip :: () => Seq a -> Seq b -> Seq (a, b)
+ RIO.Seq: zip3 :: () => Seq a -> Seq b -> Seq c -> Seq (a, b, c)
+ RIO.Seq: zip4 :: () => Seq a -> Seq b -> Seq c -> Seq d -> Seq (a, b, c, d)
+ RIO.Seq: zipWith :: () => (a -> b -> c) -> Seq a -> Seq b -> Seq c
+ RIO.Seq: zipWith3 :: () => (a -> b -> c -> d) -> Seq a -> Seq b -> Seq c -> Seq d
+ RIO.Seq: zipWith4 :: () => (a -> b -> c -> d -> e) -> Seq a -> Seq b -> Seq c -> Seq d -> Seq e
+ RIO.Set: (\\) :: Ord a => Set a -> Set a -> Set a
+ RIO.Set: data Set a :: * -> *
+ RIO.Set: delete :: Ord a => a -> Set a -> Set a
+ RIO.Set: deleteMax :: () => Set a -> Set a
+ RIO.Set: deleteMin :: () => Set a -> Set a
+ RIO.Set: difference :: Ord a => Set a -> Set a -> Set a
+ RIO.Set: drop :: () => Int -> Set a -> Set a
+ RIO.Set: dropWhileAntitone :: () => (a -> Bool) -> Set a -> Set a
+ RIO.Set: elems :: () => Set a -> [a]
+ RIO.Set: empty :: () => Set a
+ RIO.Set: filter :: () => (a -> Bool) -> Set a -> Set a
+ RIO.Set: foldl :: () => (a -> b -> a) -> a -> Set b -> a
+ RIO.Set: foldl' :: () => (a -> b -> a) -> a -> Set b -> a
+ RIO.Set: foldr :: () => (a -> b -> b) -> b -> Set a -> b
+ RIO.Set: foldr' :: () => (a -> b -> b) -> b -> Set a -> b
+ RIO.Set: fromList :: Ord a => [a] -> Set a
+ RIO.Set: infixl 9 \\
+ RIO.Set: insert :: Ord a => a -> Set a -> Set a
+ RIO.Set: intersection :: Ord a => Set a -> Set a -> Set a
+ RIO.Set: isProperSubsetOf :: Ord a => Set a -> Set a -> Bool
+ RIO.Set: isSubsetOf :: Ord a => Set a -> Set a -> Bool
+ RIO.Set: lookupGE :: Ord a => a -> Set a -> Maybe a
+ RIO.Set: lookupGT :: Ord a => a -> Set a -> Maybe a
+ RIO.Set: lookupIndex :: Ord a => a -> Set a -> Maybe Int
+ RIO.Set: lookupLE :: Ord a => a -> Set a -> Maybe a
+ RIO.Set: lookupLT :: Ord a => a -> Set a -> Maybe a
+ RIO.Set: lookupMax :: () => Set a -> Maybe a
+ RIO.Set: lookupMin :: () => Set a -> Maybe a
+ RIO.Set: map :: Ord b => (a -> b) -> Set a -> Set b
+ RIO.Set: maxView :: () => Set a -> Maybe (a, Set a)
+ RIO.Set: member :: Ord a => a -> Set a -> Bool
+ RIO.Set: minView :: () => Set a -> Maybe (a, Set a)
+ RIO.Set: notMember :: Ord a => a -> Set a -> Bool
+ RIO.Set: null :: () => Set a -> Bool
+ RIO.Set: partition :: () => (a -> Bool) -> Set a -> (Set a, Set a)
+ RIO.Set: showTree :: Show a => Set a -> String
+ RIO.Set: showTreeWith :: Show a => Bool -> Bool -> Set a -> String
+ RIO.Set: singleton :: () => a -> Set a
+ RIO.Set: size :: () => Set a -> Int
+ RIO.Set: spanAntitone :: () => (a -> Bool) -> Set a -> (Set a, Set a)
+ RIO.Set: split :: Ord a => a -> Set a -> (Set a, Set a)
+ RIO.Set: splitAt :: () => Int -> Set a -> (Set a, Set a)
+ RIO.Set: splitMember :: Ord a => a -> Set a -> (Set a, Bool, Set a)
+ RIO.Set: splitRoot :: () => Set a -> [Set a]
+ RIO.Set: take :: () => Int -> Set a -> Set a
+ RIO.Set: takeWhileAntitone :: () => (a -> Bool) -> Set a -> Set a
+ RIO.Set: toAscList :: () => Set a -> [a]
+ RIO.Set: toDescList :: () => Set a -> [a]
+ RIO.Set: toList :: () => Set a -> [a]
+ RIO.Set: union :: Ord a => Set a -> Set a -> Set a
+ RIO.Set: unions :: Ord a => [Set a] -> Set a
+ RIO.Set: valid :: Ord a => Set a -> Bool
+ RIO.Set.Partial: deleteAt :: () => Int -> Set a -> Set a
+ RIO.Set.Partial: deleteFindMax :: () => Set a -> (a, Set a)
+ RIO.Set.Partial: deleteFindMin :: () => Set a -> (a, Set a)
+ RIO.Set.Partial: elemAt :: () => Int -> Set a -> a
+ RIO.Set.Partial: findIndex :: Ord a => a -> Set a -> Int
+ RIO.Set.Partial: findMax :: () => Set a -> a
+ RIO.Set.Partial: findMin :: () => Set a -> a
+ RIO.Set.Unchecked: fromAscList :: Eq a => [a] -> Set a
+ RIO.Set.Unchecked: fromDescList :: Eq a => [a] -> Set a
+ RIO.Set.Unchecked: fromDistinctAscList :: () => [a] -> Set a
+ RIO.Set.Unchecked: fromDistinctDescList :: () => [a] -> Set a
+ RIO.Set.Unchecked: mapMonotonic :: () => (a -> b) -> Set a -> Set b
+ RIO.Text: all :: (Char -> Bool) -> Text -> Bool
+ RIO.Text: any :: (Char -> Bool) -> Text -> Bool
+ RIO.Text: append :: Text -> Text -> Text
+ RIO.Text: break :: (Char -> Bool) -> Text -> (Text, Text)
+ RIO.Text: center :: Int -> Char -> Text -> Text
+ RIO.Text: chunksOf :: Int -> Text -> [Text]
+ RIO.Text: commonPrefixes :: Text -> Text -> Maybe (Text, Text, Text)
+ RIO.Text: compareLength :: Text -> Int -> Ordering
+ RIO.Text: concat :: [Text] -> Text
+ RIO.Text: concatMap :: (Char -> Text) -> Text -> Text
+ RIO.Text: cons :: Char -> Text -> Text
+ RIO.Text: copy :: Text -> Text
+ RIO.Text: data Text :: *
+ RIO.Text: drop :: Int -> Text -> Text
+ RIO.Text: dropAround :: (Char -> Bool) -> Text -> Text
+ RIO.Text: dropEnd :: Int -> Text -> Text
+ RIO.Text: dropWhile :: (Char -> Bool) -> Text -> Text
+ RIO.Text: dropWhileEnd :: (Char -> Bool) -> Text -> Text
+ RIO.Text: empty :: Text
+ RIO.Text: filter :: (Char -> Bool) -> Text -> Text
+ RIO.Text: find :: (Char -> Bool) -> Text -> Maybe Char
+ RIO.Text: findIndex :: (Char -> Bool) -> Text -> Maybe Int
+ RIO.Text: foldl :: () => (a -> Char -> a) -> a -> Text -> a
+ RIO.Text: foldl' :: () => (a -> Char -> a) -> a -> Text -> a
+ RIO.Text: foldr :: () => (Char -> a -> a) -> a -> Text -> a
+ RIO.Text: group :: Text -> [Text]
+ RIO.Text: groupBy :: (Char -> Char -> Bool) -> Text -> [Text]
+ RIO.Text: index :: Text -> Int -> Char
+ RIO.Text: infixr 5 `cons`
+ RIO.Text: inits :: Text -> [Text]
+ RIO.Text: intercalate :: Text -> [Text] -> Text
+ RIO.Text: intersperse :: Char -> Text -> Text
+ RIO.Text: isInfixOf :: Text -> Text -> Bool
+ RIO.Text: isPrefixOf :: Text -> Text -> Bool
+ RIO.Text: isSuffixOf :: Text -> Text -> Bool
+ RIO.Text: justifyLeft :: Int -> Char -> Text -> Text
+ RIO.Text: justifyRight :: Int -> Char -> Text -> Text
+ RIO.Text: length :: Text -> Int
+ RIO.Text: lines :: Text -> [Text]
+ RIO.Text: linesCR :: Text -> [Text]
+ RIO.Text: map :: (Char -> Char) -> Text -> Text
+ RIO.Text: mapAccumL :: () => (a -> Char -> (a, Char)) -> a -> Text -> (a, Text)
+ RIO.Text: mapAccumR :: () => (a -> Char -> (a, Char)) -> a -> Text -> (a, Text)
+ RIO.Text: null :: Text -> Bool
+ RIO.Text: pack :: String -> Text
+ RIO.Text: partition :: (Char -> Bool) -> Text -> (Text, Text)
+ RIO.Text: replicate :: Int -> Text -> Text
+ RIO.Text: reverse :: Text -> Text
+ RIO.Text: scanl :: (Char -> Char -> Char) -> Char -> Text -> Text
+ RIO.Text: scanl1 :: (Char -> Char -> Char) -> Text -> Text
+ RIO.Text: scanr :: (Char -> Char -> Char) -> Char -> Text -> Text
+ RIO.Text: scanr1 :: (Char -> Char -> Char) -> Text -> Text
+ RIO.Text: singleton :: Char -> Text
+ RIO.Text: snoc :: Text -> Char -> Text
+ RIO.Text: span :: (Char -> Bool) -> Text -> (Text, Text)
+ RIO.Text: split :: (Char -> Bool) -> Text -> [Text]
+ RIO.Text: splitAt :: Int -> Text -> (Text, Text)
+ RIO.Text: strip :: Text -> Text
+ RIO.Text: stripEnd :: Text -> Text
+ RIO.Text: stripPrefix :: Text -> Text -> Maybe Text
+ RIO.Text: stripStart :: Text -> Text
+ RIO.Text: stripSuffix :: Text -> Text -> Maybe Text
+ RIO.Text: tails :: Text -> [Text]
+ RIO.Text: take :: Int -> Text -> Text
+ RIO.Text: takeEnd :: Int -> Text -> Text
+ RIO.Text: takeWhile :: (Char -> Bool) -> Text -> Text
+ RIO.Text: takeWhileEnd :: (Char -> Bool) -> Text -> Text
+ RIO.Text: toCaseFold :: Text -> Text
+ RIO.Text: toLower :: Text -> Text
+ RIO.Text: toTitle :: Text -> Text
+ RIO.Text: toUpper :: Text -> Text
+ RIO.Text: transpose :: [Text] -> [Text]
+ RIO.Text: uncons :: Text -> Maybe (Char, Text)
+ RIO.Text: unfoldr :: () => (a -> Maybe (Char, a)) -> a -> Text
+ RIO.Text: unfoldrN :: () => Int -> (a -> Maybe (Char, a)) -> a -> Text
+ RIO.Text: unlines :: [Text] -> Text
+ RIO.Text: unpack :: Text -> String
+ RIO.Text: unpackCString# :: Addr# -> Text
+ RIO.Text: unwords :: [Text] -> Text
+ RIO.Text: words :: Text -> [Text]
+ RIO.Text: zip :: Text -> Text -> [(Char, Char)]
+ RIO.Text: zipWith :: (Char -> Char -> Char) -> Text -> Text -> Text
+ RIO.Text.Lazy: all :: (Char -> Bool) -> Text -> Bool
+ RIO.Text.Lazy: any :: (Char -> Bool) -> Text -> Bool
+ RIO.Text.Lazy: append :: Text -> Text -> Text
+ RIO.Text.Lazy: break :: (Char -> Bool) -> Text -> (Text, Text)
+ RIO.Text.Lazy: center :: Int64 -> Char -> Text -> Text
+ RIO.Text.Lazy: chunksOf :: Int64 -> Text -> [Text]
+ RIO.Text.Lazy: commonPrefixes :: Text -> Text -> Maybe (Text, Text, Text)
+ RIO.Text.Lazy: compareLength :: Text -> Int64 -> Ordering
+ RIO.Text.Lazy: concat :: [Text] -> Text
+ RIO.Text.Lazy: concatMap :: (Char -> Text) -> Text -> Text
+ RIO.Text.Lazy: cons :: Char -> Text -> Text
+ RIO.Text.Lazy: count :: Text -> Text -> Int64
+ RIO.Text.Lazy: cycle :: Text -> Text
+ RIO.Text.Lazy: data Text :: *
+ RIO.Text.Lazy: drop :: Int64 -> Text -> Text
+ RIO.Text.Lazy: dropAround :: (Char -> Bool) -> Text -> Text
+ RIO.Text.Lazy: dropEnd :: Int64 -> Text -> Text
+ RIO.Text.Lazy: dropWhile :: (Char -> Bool) -> Text -> Text
+ RIO.Text.Lazy: dropWhileEnd :: (Char -> Bool) -> Text -> Text
+ RIO.Text.Lazy: empty :: Text
+ RIO.Text.Lazy: filter :: (Char -> Bool) -> Text -> Text
+ RIO.Text.Lazy: find :: (Char -> Bool) -> Text -> Maybe Char
+ RIO.Text.Lazy: foldl :: () => (a -> Char -> a) -> a -> Text -> a
+ RIO.Text.Lazy: foldl' :: () => (a -> Char -> a) -> a -> Text -> a
+ RIO.Text.Lazy: foldlChunks :: () => (a -> Text -> a) -> a -> Text -> a
+ RIO.Text.Lazy: foldr :: () => (Char -> a -> a) -> a -> Text -> a
+ RIO.Text.Lazy: foldrChunks :: () => (Text -> a -> a) -> a -> Text -> a
+ RIO.Text.Lazy: fromChunks :: [Text] -> Text
+ RIO.Text.Lazy: fromStrict :: Text -> Text
+ RIO.Text.Lazy: group :: Text -> [Text]
+ RIO.Text.Lazy: groupBy :: (Char -> Char -> Bool) -> Text -> [Text]
+ RIO.Text.Lazy: index :: Text -> Int64 -> Char
+ RIO.Text.Lazy: infixr 5 `cons`
+ RIO.Text.Lazy: inits :: Text -> [Text]
+ RIO.Text.Lazy: intercalate :: Text -> [Text] -> Text
+ RIO.Text.Lazy: intersperse :: Char -> Text -> Text
+ RIO.Text.Lazy: isInfixOf :: Text -> Text -> Bool
+ RIO.Text.Lazy: isPrefixOf :: Text -> Text -> Bool
+ RIO.Text.Lazy: isSuffixOf :: Text -> Text -> Bool
+ RIO.Text.Lazy: iterate :: (Char -> Char) -> Char -> Text
+ RIO.Text.Lazy: justifyLeft :: Int64 -> Char -> Text -> Text
+ RIO.Text.Lazy: justifyRight :: Int64 -> Char -> Text -> Text
+ RIO.Text.Lazy: length :: Text -> Int64
+ RIO.Text.Lazy: lines :: Text -> [Text]
+ RIO.Text.Lazy: map :: (Char -> Char) -> Text -> Text
+ RIO.Text.Lazy: mapAccumL :: () => (a -> Char -> (a, Char)) -> a -> Text -> (a, Text)
+ RIO.Text.Lazy: mapAccumR :: () => (a -> Char -> (a, Char)) -> a -> Text -> (a, Text)
+ RIO.Text.Lazy: null :: Text -> Bool
+ RIO.Text.Lazy: pack :: String -> Text
+ RIO.Text.Lazy: partition :: (Char -> Bool) -> Text -> (Text, Text)
+ RIO.Text.Lazy: repeat :: Char -> Text
+ RIO.Text.Lazy: replicate :: Int64 -> Text -> Text
+ RIO.Text.Lazy: reverse :: Text -> Text
+ RIO.Text.Lazy: scanl :: (Char -> Char -> Char) -> Char -> Text -> Text
+ RIO.Text.Lazy: scanl1 :: (Char -> Char -> Char) -> Text -> Text
+ RIO.Text.Lazy: scanr :: (Char -> Char -> Char) -> Char -> Text -> Text
+ RIO.Text.Lazy: scanr1 :: (Char -> Char -> Char) -> Text -> Text
+ RIO.Text.Lazy: singleton :: Char -> Text
+ RIO.Text.Lazy: snoc :: Text -> Char -> Text
+ RIO.Text.Lazy: span :: (Char -> Bool) -> Text -> (Text, Text)
+ RIO.Text.Lazy: split :: (Char -> Bool) -> Text -> [Text]
+ RIO.Text.Lazy: splitAt :: Int64 -> Text -> (Text, Text)
+ RIO.Text.Lazy: strip :: Text -> Text
+ RIO.Text.Lazy: stripEnd :: Text -> Text
+ RIO.Text.Lazy: stripPrefix :: Text -> Text -> Maybe Text
+ RIO.Text.Lazy: stripStart :: Text -> Text
+ RIO.Text.Lazy: stripSuffix :: Text -> Text -> Maybe Text
+ RIO.Text.Lazy: tails :: Text -> [Text]
+ RIO.Text.Lazy: take :: Int64 -> Text -> Text
+ RIO.Text.Lazy: takeEnd :: Int64 -> Text -> Text
+ RIO.Text.Lazy: takeWhile :: (Char -> Bool) -> Text -> Text
+ RIO.Text.Lazy: takeWhileEnd :: (Char -> Bool) -> Text -> Text
+ RIO.Text.Lazy: toCaseFold :: Text -> Text
+ RIO.Text.Lazy: toChunks :: Text -> [Text]
+ RIO.Text.Lazy: toLower :: Text -> Text
+ RIO.Text.Lazy: toStrict :: Text -> Text
+ RIO.Text.Lazy: toTitle :: Text -> Text
+ RIO.Text.Lazy: toUpper :: Text -> Text
+ RIO.Text.Lazy: transpose :: [Text] -> [Text]
+ RIO.Text.Lazy: uncons :: Text -> Maybe (Char, Text)
+ RIO.Text.Lazy: unfoldr :: () => (a -> Maybe (Char, a)) -> a -> Text
+ RIO.Text.Lazy: unfoldrN :: () => Int64 -> (a -> Maybe (Char, a)) -> a -> Text
+ RIO.Text.Lazy: unlines :: [Text] -> Text
+ RIO.Text.Lazy: unpack :: Text -> String
+ RIO.Text.Lazy: unwords :: [Text] -> Text
+ RIO.Text.Lazy: words :: Text -> [Text]
+ RIO.Text.Lazy: zip :: Text -> Text -> [(Char, Char)]
+ RIO.Text.Lazy: zipWith :: (Char -> Char -> Char) -> Text -> Text -> Text
+ RIO.Text.Lazy.Partial: breakOn :: Text -> Text -> (Text, Text)
+ RIO.Text.Lazy.Partial: breakOnAll :: Text -> Text -> [(Text, Text)]
+ RIO.Text.Lazy.Partial: breakOnEnd :: Text -> Text -> (Text, Text)
+ RIO.Text.Lazy.Partial: foldl1 :: (Char -> Char -> Char) -> Text -> Char
+ RIO.Text.Lazy.Partial: foldl1' :: (Char -> Char -> Char) -> Text -> Char
+ RIO.Text.Lazy.Partial: foldr1 :: (Char -> Char -> Char) -> Text -> Char
+ RIO.Text.Lazy.Partial: head :: Text -> Char
+ RIO.Text.Lazy.Partial: init :: Text -> Text
+ RIO.Text.Lazy.Partial: last :: Text -> Char
+ RIO.Text.Lazy.Partial: maximum :: Text -> Char
+ RIO.Text.Lazy.Partial: minimum :: Text -> Char
+ RIO.Text.Lazy.Partial: replace :: Text -> Text -> Text -> Text
+ RIO.Text.Lazy.Partial: splitOn :: Text -> Text -> [Text]
+ RIO.Text.Lazy.Partial: tail :: Text -> Text
+ RIO.Text.Partial: breakOn :: Text -> Text -> (Text, Text)
+ RIO.Text.Partial: breakOnAll :: Text -> Text -> [(Text, Text)]
+ RIO.Text.Partial: breakOnEnd :: Text -> Text -> (Text, Text)
+ RIO.Text.Partial: count :: Text -> Text -> Int
+ RIO.Text.Partial: foldl1 :: (Char -> Char -> Char) -> Text -> Char
+ RIO.Text.Partial: foldl1' :: (Char -> Char -> Char) -> Text -> Char
+ RIO.Text.Partial: foldr1 :: (Char -> Char -> Char) -> Text -> Char
+ RIO.Text.Partial: head :: Text -> Char
+ RIO.Text.Partial: init :: Text -> Text
+ RIO.Text.Partial: last :: Text -> Char
+ RIO.Text.Partial: maximum :: Text -> Char
+ RIO.Text.Partial: minimum :: Text -> Char
+ RIO.Text.Partial: replace :: Text -> Text -> Text -> Text
+ RIO.Text.Partial: splitOn :: Text -> Text -> [Text]
+ RIO.Text.Partial: tail :: Text -> Text
+ RIO.Time: getCurrentTime :: MonadIO m => m UTCTime
+ RIO.Time: getCurrentTimeZone :: MonadIO m => m TimeZone
+ RIO.Time: getTimeZone :: MonadIO m => UTCTime -> m TimeZone
+ RIO.Time: getZonedTime :: MonadIO m => m ZonedTime
+ RIO.Time: utcToLocalZonedTime :: MonadIO m => UTCTime -> m ZonedTime
+ RIO.Vector: (!?) :: Vector v a => v a -> Int -> Maybe a
+ RIO.Vector: (++) :: Vector v a => v a -> v a -> v a
+ RIO.Vector: all :: Vector v a => (a -> Bool) -> v a -> Bool
+ RIO.Vector: and :: Vector v Bool => v Bool -> Bool
+ RIO.Vector: any :: Vector v a => (a -> Bool) -> v a -> Bool
+ RIO.Vector: break :: Vector v a => (a -> Bool) -> v a -> (v a, v a)
+ RIO.Vector: class MVector Mutable v a => Vector (v :: * -> *) a
+ RIO.Vector: clone :: Vector v a => v a -> New v a
+ RIO.Vector: cmp :: (Vector v a, Ord a) => v a -> v a -> Ordering
+ RIO.Vector: cmpBy :: (Vector v a, Vector v b) => (a -> b -> Ordering) -> v a -> v b -> Ordering
+ RIO.Vector: concat :: Vector v a => [v a] -> v a
+ RIO.Vector: concatMap :: (Vector v a, Vector v b) => (a -> v b) -> v a -> v b
+ RIO.Vector: concatNE :: Vector v a => NonEmpty v a -> v a
+ RIO.Vector: cons :: Vector v a => a -> v a -> v a
+ RIO.Vector: constructN :: Vector v a => Int -> (v a -> a) -> v a
+ RIO.Vector: constructrN :: Vector v a => Int -> (v a -> a) -> v a
+ RIO.Vector: convert :: (Vector v a, Vector w a) => v a -> w a
+ RIO.Vector: copy :: (PrimMonad m, Vector v a) => Mutable v PrimState m a -> v a -> m ()
+ RIO.Vector: create :: Vector v a => (forall s. () => ST s Mutable v s a) -> v a
+ RIO.Vector: createT :: (Traversable f, Vector v a) => (forall s. () => ST s f Mutable v s a) -> f v a
+ RIO.Vector: dataCast :: (Vector v a, Data a, Typeable (* -> *) v, Typeable (* -> *) t) => (forall d. Data d => c t d) -> Maybe c v a
+ RIO.Vector: drop :: Vector v a => Int -> v a -> v a
+ RIO.Vector: dropWhile :: Vector v a => (a -> Bool) -> v a -> v a
+ RIO.Vector: elem :: (Vector v a, Eq a) => a -> v a -> Bool
+ RIO.Vector: elemIndex :: (Vector v a, Eq a) => a -> v a -> Maybe Int
+ RIO.Vector: elemIndices :: (Vector v a, Vector v Int, Eq a) => a -> v a -> v Int
+ RIO.Vector: empty :: Vector v a => v a
+ RIO.Vector: enumFromN :: (Vector v a, Num a) => a -> Int -> v a
+ RIO.Vector: enumFromStepN :: (Vector v a, Num a) => a -> a -> Int -> v a
+ RIO.Vector: enumFromThenTo :: (Vector v a, Enum a) => a -> a -> a -> v a
+ RIO.Vector: enumFromTo :: (Vector v a, Enum a) => a -> a -> v a
+ RIO.Vector: eq :: (Vector v a, Eq a) => v a -> v a -> Bool
+ RIO.Vector: eqBy :: (Vector v a, Vector v b) => (a -> b -> Bool) -> v a -> v b -> Bool
+ RIO.Vector: filter :: Vector v a => (a -> Bool) -> v a -> v a
+ RIO.Vector: filterM :: (Monad m, Vector v a) => (a -> m Bool) -> v a -> m v a
+ RIO.Vector: find :: Vector v a => (a -> Bool) -> v a -> Maybe a
+ RIO.Vector: findIndex :: Vector v a => (a -> Bool) -> v a -> Maybe Int
+ RIO.Vector: findIndices :: (Vector v a, Vector v Int) => (a -> Bool) -> v a -> v Int
+ RIO.Vector: foldM :: (Monad m, Vector v b) => (a -> b -> m a) -> a -> v b -> m a
+ RIO.Vector: foldM' :: (Monad m, Vector v b) => (a -> b -> m a) -> a -> v b -> m a
+ RIO.Vector: foldM'_ :: (Monad m, Vector v b) => (a -> b -> m a) -> a -> v b -> m ()
+ RIO.Vector: foldM_ :: (Monad m, Vector v b) => (a -> b -> m a) -> a -> v b -> m ()
+ RIO.Vector: foldl :: Vector v b => (a -> b -> a) -> a -> v b -> a
+ RIO.Vector: foldl' :: Vector v b => (a -> b -> a) -> a -> v b -> a
+ RIO.Vector: foldr :: Vector v a => (a -> b -> b) -> b -> v a -> b
+ RIO.Vector: foldr' :: Vector v a => (a -> b -> b) -> b -> v a -> b
+ RIO.Vector: forM :: (Monad m, Vector v a, Vector v b) => v a -> (a -> m b) -> m v b
+ RIO.Vector: forM_ :: (Monad m, Vector v a) => v a -> (a -> m b) -> m ()
+ RIO.Vector: force :: Vector v a => v a -> v a
+ RIO.Vector: freeze :: (PrimMonad m, Vector v a) => Mutable v PrimState m a -> m v a
+ RIO.Vector: fromList :: Vector v a => [a] -> v a
+ RIO.Vector: fromListN :: Vector v a => Int -> [a] -> v a
+ RIO.Vector: generate :: Vector v a => Int -> (Int -> a) -> v a
+ RIO.Vector: generateM :: (Monad m, Vector v a) => Int -> (Int -> m a) -> m v a
+ RIO.Vector: gfoldl :: (Vector v a, Data a) => (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. () => g -> c g) -> v a -> c v a
+ RIO.Vector: ifilter :: Vector v a => (Int -> a -> Bool) -> v a -> v a
+ RIO.Vector: ifoldM :: (Monad m, Vector v b) => (a -> Int -> b -> m a) -> a -> v b -> m a
+ RIO.Vector: ifoldM' :: (Monad m, Vector v b) => (a -> Int -> b -> m a) -> a -> v b -> m a
+ RIO.Vector: ifoldM'_ :: (Monad m, Vector v b) => (a -> Int -> b -> m a) -> a -> v b -> m ()
+ RIO.Vector: ifoldM_ :: (Monad m, Vector v b) => (a -> Int -> b -> m a) -> a -> v b -> m ()
+ RIO.Vector: ifoldl :: Vector v b => (a -> Int -> b -> a) -> a -> v b -> a
+ RIO.Vector: ifoldl' :: Vector v b => (a -> Int -> b -> a) -> a -> v b -> a
+ RIO.Vector: ifoldr :: Vector v a => (Int -> a -> b -> b) -> b -> v a -> b
+ RIO.Vector: ifoldr' :: Vector v a => (Int -> a -> b -> b) -> b -> v a -> b
+ RIO.Vector: imap :: (Vector v a, Vector v b) => (Int -> a -> b) -> v a -> v b
+ RIO.Vector: imapM :: (Monad m, Vector v a, Vector v b) => (Int -> a -> m b) -> v a -> m v b
+ RIO.Vector: imapM_ :: (Monad m, Vector v a) => (Int -> a -> m b) -> v a -> m ()
+ RIO.Vector: imapMaybe :: (Vector v a, Vector v b) => (Int -> a -> Maybe b) -> v a -> v b
+ RIO.Vector: indexed :: (Vector v a, Vector v (Int, a)) => v a -> v (Int, a)
+ RIO.Vector: infix 4 `notElem`
+ RIO.Vector: infixl 9 !?
+ RIO.Vector: infixr 5 ++
+ RIO.Vector: iscanl :: (Vector v a, Vector v b) => (Int -> a -> b -> a) -> a -> v b -> v a
+ RIO.Vector: iscanl' :: (Vector v a, Vector v b) => (Int -> a -> b -> a) -> a -> v b -> v a
+ RIO.Vector: iscanr :: (Vector v a, Vector v b) => (Int -> a -> b -> b) -> b -> v a -> v b
+ RIO.Vector: iscanr' :: (Vector v a, Vector v b) => (Int -> a -> b -> b) -> b -> v a -> v b
+ RIO.Vector: iterateN :: Vector v a => Int -> (a -> a) -> a -> v a
+ RIO.Vector: iterateNM :: (Monad m, Vector v a) => Int -> (a -> m a) -> a -> m v a
+ RIO.Vector: izipWith :: (Vector v a, Vector v b, Vector v c) => (Int -> a -> b -> c) -> v a -> v b -> v c
+ RIO.Vector: izipWith3 :: (Vector v a, Vector v b, Vector v c, Vector v d) => (Int -> a -> b -> c -> d) -> v a -> v b -> v c -> v d
+ RIO.Vector: izipWith4 :: (Vector v a, Vector v b, Vector v c, Vector v d, Vector v e) => (Int -> a -> b -> c -> d -> e) -> v a -> v b -> v c -> v d -> v e
+ RIO.Vector: izipWith5 :: (Vector v a, Vector v b, Vector v c, Vector v d, Vector v e, Vector v f) => (Int -> a -> b -> c -> d -> e -> f) -> v a -> v b -> v c -> v d -> v e -> v f
+ RIO.Vector: izipWith6 :: (Vector v a, Vector v b, Vector v c, Vector v d, Vector v e, Vector v f, Vector v g) => (Int -> a -> b -> c -> d -> e -> f -> g) -> v a -> v b -> v c -> v d -> v e -> v f -> v g
+ RIO.Vector: izipWithM :: (Monad m, Vector v a, Vector v b, Vector v c) => (Int -> a -> b -> m c) -> v a -> v b -> m v c
+ RIO.Vector: izipWithM_ :: (Monad m, Vector v a, Vector v b) => (Int -> a -> b -> m c) -> v a -> v b -> m ()
+ RIO.Vector: length :: Vector v a => v a -> Int
+ RIO.Vector: liftReadsPrec :: Vector v a => (Int -> ReadS a) -> ReadS [a] -> Int -> ReadS v a
+ RIO.Vector: liftShowsPrec :: Vector v a => (Int -> a -> ShowS) -> ([a] -> ShowS) -> Int -> v a -> ShowS
+ RIO.Vector: map :: (Vector v a, Vector v b) => (a -> b) -> v a -> v b
+ RIO.Vector: mapM :: (Monad m, Vector v a, Vector v b) => (a -> m b) -> v a -> m v b
+ RIO.Vector: mapM_ :: (Monad m, Vector v a) => (a -> m b) -> v a -> m ()
+ RIO.Vector: mapMaybe :: (Vector v a, Vector v b) => (a -> Maybe b) -> v a -> v b
+ RIO.Vector: mkType :: String -> DataType
+ RIO.Vector: modify :: Vector v a => (forall s. () => Mutable v s a -> ST s ()) -> v a -> v a
+ RIO.Vector: new :: Vector v a => New v a -> v a
+ RIO.Vector: notElem :: (Vector v a, Eq a) => a -> v a -> Bool
+ RIO.Vector: null :: Vector v a => v a -> Bool
+ RIO.Vector: or :: Vector v Bool => v Bool -> Bool
+ RIO.Vector: partition :: Vector v a => (a -> Bool) -> v a -> (v a, v a)
+ RIO.Vector: postscanl :: (Vector v a, Vector v b) => (a -> b -> a) -> a -> v b -> v a
+ RIO.Vector: postscanl' :: (Vector v a, Vector v b) => (a -> b -> a) -> a -> v b -> v a
+ RIO.Vector: postscanr :: (Vector v a, Vector v b) => (a -> b -> b) -> b -> v a -> v b
+ RIO.Vector: postscanr' :: (Vector v a, Vector v b) => (a -> b -> b) -> b -> v a -> v b
+ RIO.Vector: prescanl :: (Vector v a, Vector v b) => (a -> b -> a) -> a -> v b -> v a
+ RIO.Vector: prescanl' :: (Vector v a, Vector v b) => (a -> b -> a) -> a -> v b -> v a
+ RIO.Vector: prescanr :: (Vector v a, Vector v b) => (a -> b -> b) -> b -> v a -> v b
+ RIO.Vector: prescanr' :: (Vector v a, Vector v b) => (a -> b -> b) -> b -> v a -> v b
+ RIO.Vector: product :: (Vector v a, Num a) => v a -> a
+ RIO.Vector: readPrec :: (Vector v a, Read a) => ReadPrec v a
+ RIO.Vector: replicate :: Vector v a => Int -> a -> v a
+ RIO.Vector: replicateM :: (Monad m, Vector v a) => Int -> m a -> m v a
+ RIO.Vector: reverse :: Vector v a => v a -> v a
+ RIO.Vector: scanl :: (Vector v a, Vector v b) => (a -> b -> a) -> a -> v b -> v a
+ RIO.Vector: scanl' :: (Vector v a, Vector v b) => (a -> b -> a) -> a -> v b -> v a
+ RIO.Vector: scanr :: (Vector v a, Vector v b) => (a -> b -> b) -> b -> v a -> v b
+ RIO.Vector: scanr' :: (Vector v a, Vector v b) => (a -> b -> b) -> b -> v a -> v b
+ RIO.Vector: sequence :: (Monad m, Vector v a, Vector v m a) => v m a -> m v a
+ RIO.Vector: sequence_ :: (Monad m, Vector v m a) => v m a -> m ()
+ RIO.Vector: showsPrec :: (Vector v a, Show a) => Int -> v a -> ShowS
+ RIO.Vector: singleton :: Vector v a => a -> v a
+ RIO.Vector: slice :: Vector v a => Int -> Int -> v a -> v a
+ RIO.Vector: snoc :: Vector v a => v a -> a -> v a
+ RIO.Vector: span :: Vector v a => (a -> Bool) -> v a -> (v a, v a)
+ RIO.Vector: splitAt :: Vector v a => Int -> v a -> (v a, v a)
+ RIO.Vector: stream :: Vector v a => v a -> Bundle v a
+ RIO.Vector: streamR :: Vector v a => v a -> Bundle u a
+ RIO.Vector: sum :: (Vector v a, Num a) => v a -> a
+ RIO.Vector: take :: Vector v a => Int -> v a -> v a
+ RIO.Vector: takeWhile :: Vector v a => (a -> Bool) -> v a -> v a
+ RIO.Vector: thaw :: (PrimMonad m, Vector v a) => v a -> m Mutable v PrimState m a
+ RIO.Vector: toList :: Vector v a => v a -> [a]
+ RIO.Vector: unfoldr :: Vector v a => (b -> Maybe (a, b)) -> b -> v a
+ RIO.Vector: unfoldrM :: (Monad m, Vector v a) => (b -> m Maybe (a, b)) -> b -> m v a
+ RIO.Vector: unfoldrN :: Vector v a => Int -> (b -> Maybe (a, b)) -> b -> v a
+ RIO.Vector: unfoldrNM :: (Monad m, Vector v a) => Int -> (b -> m Maybe (a, b)) -> b -> m v a
+ RIO.Vector: uniq :: (Vector v a, Eq a) => v a -> v a
+ RIO.Vector: unstablePartition :: Vector v a => (a -> Bool) -> v a -> (v a, v a)
+ RIO.Vector: unstream :: Vector v a => Bundle v a -> v a
+ RIO.Vector: unstreamR :: Vector v a => Bundle v a -> v a
+ RIO.Vector: unzip :: (Vector v a, Vector v b, Vector v (a, b)) => v (a, b) -> (v a, v b)
+ RIO.Vector: unzip3 :: (Vector v a, Vector v b, Vector v c, Vector v (a, b, c)) => v (a, b, c) -> (v a, v b, v c)
+ RIO.Vector: unzip4 :: (Vector v a, Vector v b, Vector v c, Vector v d, Vector v (a, b, c, d)) => v (a, b, c, d) -> (v a, v b, v c, v d)
+ RIO.Vector: unzip5 :: (Vector v a, Vector v b, Vector v c, Vector v d, Vector v e, Vector v (a, b, c, d, e)) => v (a, b, c, d, e) -> (v a, v b, v c, v d, v e)
+ RIO.Vector: unzip6 :: (Vector v a, Vector v b, Vector v c, Vector v d, Vector v e, Vector v f, Vector v (a, b, c, d, e, f)) => v (a, b, c, d, e, f) -> (v a, v b, v c, v d, v e, v f)
+ RIO.Vector: zip :: (Vector v a, Vector v b, Vector v (a, b)) => v a -> v b -> v (a, b)
+ RIO.Vector: zip3 :: (Vector v a, Vector v b, Vector v c, Vector v (a, b, c)) => v a -> v b -> v c -> v (a, b, c)
+ RIO.Vector: zip4 :: (Vector v a, Vector v b, Vector v c, Vector v d, Vector v (a, b, c, d)) => v a -> v b -> v c -> v d -> v (a, b, c, d)
+ RIO.Vector: zip5 :: (Vector v a, Vector v b, Vector v c, Vector v d, Vector v e, Vector v (a, b, c, d, e)) => v a -> v b -> v c -> v d -> v e -> v (a, b, c, d, e)
+ RIO.Vector: zip6 :: (Vector v a, Vector v b, Vector v c, Vector v d, Vector v e, Vector v f, Vector v (a, b, c, d, e, f)) => v a -> v b -> v c -> v d -> v e -> v f -> v (a, b, c, d, e, f)
+ RIO.Vector: zipWith :: (Vector v a, Vector v b, Vector v c) => (a -> b -> c) -> v a -> v b -> v c
+ RIO.Vector: zipWith3 :: (Vector v a, Vector v b, Vector v c, Vector v d) => (a -> b -> c -> d) -> v a -> v b -> v c -> v d
+ RIO.Vector: zipWith4 :: (Vector v a, Vector v b, Vector v c, Vector v d, Vector v e) => (a -> b -> c -> d -> e) -> v a -> v b -> v c -> v d -> v e
+ RIO.Vector: zipWith5 :: (Vector v a, Vector v b, Vector v c, Vector v d, Vector v e, Vector v f) => (a -> b -> c -> d -> e -> f) -> v a -> v b -> v c -> v d -> v e -> v f
+ RIO.Vector: zipWith6 :: (Vector v a, Vector v b, Vector v c, Vector v d, Vector v e, Vector v f, Vector v g) => (a -> b -> c -> d -> e -> f -> g) -> v a -> v b -> v c -> v d -> v e -> v f -> v g
+ RIO.Vector: zipWithM :: (Monad m, Vector v a, Vector v b, Vector v c) => (a -> b -> m c) -> v a -> v b -> m v c
+ RIO.Vector: zipWithM_ :: (Monad m, Vector v a, Vector v b) => (a -> b -> m c) -> v a -> v b -> m ()
+ RIO.Vector.Boxed: (!?) :: () => Vector a -> Int -> Maybe a
+ RIO.Vector.Boxed: (++) :: () => Vector a -> Vector a -> Vector a
+ RIO.Vector.Boxed: all :: () => (a -> Bool) -> Vector a -> Bool
+ RIO.Vector.Boxed: and :: Vector Bool -> Bool
+ RIO.Vector.Boxed: any :: () => (a -> Bool) -> Vector a -> Bool
+ RIO.Vector.Boxed: break :: () => (a -> Bool) -> Vector a -> (Vector a, Vector a)
+ RIO.Vector.Boxed: concat :: () => [Vector a] -> Vector a
+ RIO.Vector.Boxed: concatMap :: () => (a -> Vector b) -> Vector a -> Vector b
+ RIO.Vector.Boxed: cons :: () => a -> Vector a -> Vector a
+ RIO.Vector.Boxed: constructN :: () => Int -> (Vector a -> a) -> Vector a
+ RIO.Vector.Boxed: constructrN :: () => Int -> (Vector a -> a) -> Vector a
+ RIO.Vector.Boxed: convert :: (Vector v a, Vector w a) => v a -> w a
+ RIO.Vector.Boxed: copy :: PrimMonad m => MVector PrimState m a -> Vector a -> m ()
+ RIO.Vector.Boxed: create :: () => (forall s. () => ST s MVector s a) -> Vector a
+ RIO.Vector.Boxed: createT :: Traversable f => (forall s. () => ST s f MVector s a) -> f Vector a
+ RIO.Vector.Boxed: data MVector s a :: * -> * -> *
+ RIO.Vector.Boxed: data Vector a :: * -> *
+ RIO.Vector.Boxed: drop :: () => Int -> Vector a -> Vector a
+ RIO.Vector.Boxed: dropWhile :: () => (a -> Bool) -> Vector a -> Vector a
+ RIO.Vector.Boxed: elem :: Eq a => a -> Vector a -> Bool
+ RIO.Vector.Boxed: elemIndex :: Eq a => a -> Vector a -> Maybe Int
+ RIO.Vector.Boxed: elemIndices :: Eq a => a -> Vector a -> Vector Int
+ RIO.Vector.Boxed: empty :: () => Vector a
+ RIO.Vector.Boxed: enumFromN :: Num a => a -> Int -> Vector a
+ RIO.Vector.Boxed: enumFromStepN :: Num a => a -> a -> Int -> Vector a
+ RIO.Vector.Boxed: enumFromThenTo :: Enum a => a -> a -> a -> Vector a
+ RIO.Vector.Boxed: enumFromTo :: Enum a => a -> a -> Vector a
+ RIO.Vector.Boxed: filter :: () => (a -> Bool) -> Vector a -> Vector a
+ RIO.Vector.Boxed: filterM :: Monad m => (a -> m Bool) -> Vector a -> m Vector a
+ RIO.Vector.Boxed: find :: () => (a -> Bool) -> Vector a -> Maybe a
+ RIO.Vector.Boxed: findIndex :: () => (a -> Bool) -> Vector a -> Maybe Int
+ RIO.Vector.Boxed: findIndices :: () => (a -> Bool) -> Vector a -> Vector Int
+ RIO.Vector.Boxed: foldM :: Monad m => (a -> b -> m a) -> a -> Vector b -> m a
+ RIO.Vector.Boxed: foldM' :: Monad m => (a -> b -> m a) -> a -> Vector b -> m a
+ RIO.Vector.Boxed: foldM'_ :: Monad m => (a -> b -> m a) -> a -> Vector b -> m ()
+ RIO.Vector.Boxed: foldM_ :: Monad m => (a -> b -> m a) -> a -> Vector b -> m ()
+ RIO.Vector.Boxed: foldl :: () => (a -> b -> a) -> a -> Vector b -> a
+ RIO.Vector.Boxed: foldl' :: () => (a -> b -> a) -> a -> Vector b -> a
+ RIO.Vector.Boxed: foldr :: () => (a -> b -> b) -> b -> Vector a -> b
+ RIO.Vector.Boxed: foldr' :: () => (a -> b -> b) -> b -> Vector a -> b
+ RIO.Vector.Boxed: forM :: Monad m => Vector a -> (a -> m b) -> m Vector b
+ RIO.Vector.Boxed: forM_ :: Monad m => Vector a -> (a -> m b) -> m ()
+ RIO.Vector.Boxed: force :: () => Vector a -> Vector a
+ RIO.Vector.Boxed: freeze :: PrimMonad m => MVector PrimState m a -> m Vector a
+ RIO.Vector.Boxed: fromList :: () => [a] -> Vector a
+ RIO.Vector.Boxed: fromListN :: () => Int -> [a] -> Vector a
+ RIO.Vector.Boxed: generate :: () => Int -> (Int -> a) -> Vector a
+ RIO.Vector.Boxed: generateM :: Monad m => Int -> (Int -> m a) -> m Vector a
+ RIO.Vector.Boxed: ifilter :: () => (Int -> a -> Bool) -> Vector a -> Vector a
+ RIO.Vector.Boxed: ifoldM :: Monad m => (a -> Int -> b -> m a) -> a -> Vector b -> m a
+ RIO.Vector.Boxed: ifoldM' :: Monad m => (a -> Int -> b -> m a) -> a -> Vector b -> m a
+ RIO.Vector.Boxed: ifoldM'_ :: Monad m => (a -> Int -> b -> m a) -> a -> Vector b -> m ()
+ RIO.Vector.Boxed: ifoldM_ :: Monad m => (a -> Int -> b -> m a) -> a -> Vector b -> m ()
+ RIO.Vector.Boxed: ifoldl :: () => (a -> Int -> b -> a) -> a -> Vector b -> a
+ RIO.Vector.Boxed: ifoldl' :: () => (a -> Int -> b -> a) -> a -> Vector b -> a
+ RIO.Vector.Boxed: ifoldr :: () => (Int -> a -> b -> b) -> b -> Vector a -> b
+ RIO.Vector.Boxed: ifoldr' :: () => (Int -> a -> b -> b) -> b -> Vector a -> b
+ RIO.Vector.Boxed: imap :: () => (Int -> a -> b) -> Vector a -> Vector b
+ RIO.Vector.Boxed: imapM :: Monad m => (Int -> a -> m b) -> Vector a -> m Vector b
+ RIO.Vector.Boxed: imapM_ :: Monad m => (Int -> a -> m b) -> Vector a -> m ()
+ RIO.Vector.Boxed: imapMaybe :: () => (Int -> a -> Maybe b) -> Vector a -> Vector b
+ RIO.Vector.Boxed: indexed :: () => Vector a -> Vector (Int, a)
+ RIO.Vector.Boxed: infix 4 `notElem`
+ RIO.Vector.Boxed: infixr 5 ++
+ RIO.Vector.Boxed: iscanl :: () => (Int -> a -> b -> a) -> a -> Vector b -> Vector a
+ RIO.Vector.Boxed: iscanl' :: () => (Int -> a -> b -> a) -> a -> Vector b -> Vector a
+ RIO.Vector.Boxed: iscanr :: () => (Int -> a -> b -> b) -> b -> Vector a -> Vector b
+ RIO.Vector.Boxed: iscanr' :: () => (Int -> a -> b -> b) -> b -> Vector a -> Vector b
+ RIO.Vector.Boxed: iterateN :: () => Int -> (a -> a) -> a -> Vector a
+ RIO.Vector.Boxed: iterateNM :: Monad m => Int -> (a -> m a) -> a -> m Vector a
+ RIO.Vector.Boxed: izipWith :: () => (Int -> a -> b -> c) -> Vector a -> Vector b -> Vector c
+ RIO.Vector.Boxed: izipWith3 :: () => (Int -> a -> b -> c -> d) -> Vector a -> Vector b -> Vector c -> Vector d
+ RIO.Vector.Boxed: izipWith4 :: () => (Int -> a -> b -> c -> d -> e) -> Vector a -> Vector b -> Vector c -> Vector d -> Vector e
+ RIO.Vector.Boxed: izipWith5 :: () => (Int -> a -> b -> c -> d -> e -> f) -> Vector a -> Vector b -> Vector c -> Vector d -> Vector e -> Vector f
+ RIO.Vector.Boxed: izipWith6 :: () => (Int -> a -> b -> c -> d -> e -> f -> g) -> Vector a -> Vector b -> Vector c -> Vector d -> Vector e -> Vector f -> Vector g
+ RIO.Vector.Boxed: izipWithM :: Monad m => (Int -> a -> b -> m c) -> Vector a -> Vector b -> m Vector c
+ RIO.Vector.Boxed: izipWithM_ :: Monad m => (Int -> a -> b -> m c) -> Vector a -> Vector b -> m ()
+ RIO.Vector.Boxed: length :: () => Vector a -> Int
+ RIO.Vector.Boxed: map :: () => (a -> b) -> Vector a -> Vector b
+ RIO.Vector.Boxed: mapM :: Monad m => (a -> m b) -> Vector a -> m Vector b
+ RIO.Vector.Boxed: mapM_ :: Monad m => (a -> m b) -> Vector a -> m ()
+ RIO.Vector.Boxed: mapMaybe :: () => (a -> Maybe b) -> Vector a -> Vector b
+ RIO.Vector.Boxed: modify :: () => (forall s. () => MVector s a -> ST s ()) -> Vector a -> Vector a
+ RIO.Vector.Boxed: notElem :: Eq a => a -> Vector a -> Bool
+ RIO.Vector.Boxed: null :: () => Vector a -> Bool
+ RIO.Vector.Boxed: or :: Vector Bool -> Bool
+ RIO.Vector.Boxed: partition :: () => (a -> Bool) -> Vector a -> (Vector a, Vector a)
+ RIO.Vector.Boxed: postscanl :: () => (a -> b -> a) -> a -> Vector b -> Vector a
+ RIO.Vector.Boxed: postscanl' :: () => (a -> b -> a) -> a -> Vector b -> Vector a
+ RIO.Vector.Boxed: postscanr :: () => (a -> b -> b) -> b -> Vector a -> Vector b
+ RIO.Vector.Boxed: postscanr' :: () => (a -> b -> b) -> b -> Vector a -> Vector b
+ RIO.Vector.Boxed: prescanl :: () => (a -> b -> a) -> a -> Vector b -> Vector a
+ RIO.Vector.Boxed: prescanl' :: () => (a -> b -> a) -> a -> Vector b -> Vector a
+ RIO.Vector.Boxed: prescanr :: () => (a -> b -> b) -> b -> Vector a -> Vector b
+ RIO.Vector.Boxed: prescanr' :: () => (a -> b -> b) -> b -> Vector a -> Vector b
+ RIO.Vector.Boxed: product :: Num a => Vector a -> a
+ RIO.Vector.Boxed: replicate :: () => Int -> a -> Vector a
+ RIO.Vector.Boxed: replicateM :: Monad m => Int -> m a -> m Vector a
+ RIO.Vector.Boxed: reverse :: () => Vector a -> Vector a
+ RIO.Vector.Boxed: scanl :: () => (a -> b -> a) -> a -> Vector b -> Vector a
+ RIO.Vector.Boxed: scanl' :: () => (a -> b -> a) -> a -> Vector b -> Vector a
+ RIO.Vector.Boxed: scanr :: () => (a -> b -> b) -> b -> Vector a -> Vector b
+ RIO.Vector.Boxed: scanr' :: () => (a -> b -> b) -> b -> Vector a -> Vector b
+ RIO.Vector.Boxed: sequence :: Monad m => Vector m a -> m Vector a
+ RIO.Vector.Boxed: sequence_ :: Monad m => Vector m a -> m ()
+ RIO.Vector.Boxed: singleton :: () => a -> Vector a
+ RIO.Vector.Boxed: slice :: () => Int -> Int -> Vector a -> Vector a
+ RIO.Vector.Boxed: snoc :: () => Vector a -> a -> Vector a
+ RIO.Vector.Boxed: span :: () => (a -> Bool) -> Vector a -> (Vector a, Vector a)
+ RIO.Vector.Boxed: splitAt :: () => Int -> Vector a -> (Vector a, Vector a)
+ RIO.Vector.Boxed: sum :: Num a => Vector a -> a
+ RIO.Vector.Boxed: take :: () => Int -> Vector a -> Vector a
+ RIO.Vector.Boxed: takeWhile :: () => (a -> Bool) -> Vector a -> Vector a
+ RIO.Vector.Boxed: thaw :: PrimMonad m => Vector a -> m MVector PrimState m a
+ RIO.Vector.Boxed: toList :: () => Vector a -> [a]
+ RIO.Vector.Boxed: unfoldr :: () => (b -> Maybe (a, b)) -> b -> Vector a
+ RIO.Vector.Boxed: unfoldrM :: Monad m => (b -> m Maybe (a, b)) -> b -> m Vector a
+ RIO.Vector.Boxed: unfoldrN :: () => Int -> (b -> Maybe (a, b)) -> b -> Vector a
+ RIO.Vector.Boxed: unfoldrNM :: Monad m => Int -> (b -> m Maybe (a, b)) -> b -> m Vector a
+ RIO.Vector.Boxed: uniq :: Eq a => Vector a -> Vector a
+ RIO.Vector.Boxed: unstablePartition :: () => (a -> Bool) -> Vector a -> (Vector a, Vector a)
+ RIO.Vector.Boxed: unzip :: () => Vector (a, b) -> (Vector a, Vector b)
+ RIO.Vector.Boxed: unzip3 :: () => Vector (a, b, c) -> (Vector a, Vector b, Vector c)
+ RIO.Vector.Boxed: unzip4 :: () => Vector (a, b, c, d) -> (Vector a, Vector b, Vector c, Vector d)
+ RIO.Vector.Boxed: unzip5 :: () => Vector (a, b, c, d, e) -> (Vector a, Vector b, Vector c, Vector d, Vector e)
+ RIO.Vector.Boxed: unzip6 :: () => Vector (a, b, c, d, e, f) -> (Vector a, Vector b, Vector c, Vector d, Vector e, Vector f)
+ RIO.Vector.Boxed: zip :: () => Vector a -> Vector b -> Vector (a, b)
+ RIO.Vector.Boxed: zip3 :: () => Vector a -> Vector b -> Vector c -> Vector (a, b, c)
+ RIO.Vector.Boxed: zip4 :: () => Vector a -> Vector b -> Vector c -> Vector d -> Vector (a, b, c, d)
+ RIO.Vector.Boxed: zip5 :: () => Vector a -> Vector b -> Vector c -> Vector d -> Vector e -> Vector (a, b, c, d, e)
+ RIO.Vector.Boxed: zip6 :: () => Vector a -> Vector b -> Vector c -> Vector d -> Vector e -> Vector f -> Vector (a, b, c, d, e, f)
+ RIO.Vector.Boxed: zipWith :: () => (a -> b -> c) -> Vector a -> Vector b -> Vector c
+ RIO.Vector.Boxed: zipWith3 :: () => (a -> b -> c -> d) -> Vector a -> Vector b -> Vector c -> Vector d
+ RIO.Vector.Boxed: zipWith4 :: () => (a -> b -> c -> d -> e) -> Vector a -> Vector b -> Vector c -> Vector d -> Vector e
+ RIO.Vector.Boxed: zipWith5 :: () => (a -> b -> c -> d -> e -> f) -> Vector a -> Vector b -> Vector c -> Vector d -> Vector e -> Vector f
+ RIO.Vector.Boxed: zipWith6 :: () => (a -> b -> c -> d -> e -> f -> g) -> Vector a -> Vector b -> Vector c -> Vector d -> Vector e -> Vector f -> Vector g
+ RIO.Vector.Boxed: zipWithM :: Monad m => (a -> b -> m c) -> Vector a -> Vector b -> m Vector c
+ RIO.Vector.Boxed: zipWithM_ :: Monad m => (a -> b -> m c) -> Vector a -> Vector b -> m ()
+ RIO.Vector.Boxed.Partial: (!) :: () => Vector a -> Int -> a
+ RIO.Vector.Boxed.Partial: (//) :: () => Vector a -> [(Int, a)] -> Vector a
+ RIO.Vector.Boxed.Partial: accum :: () => (a -> b -> a) -> Vector a -> [(Int, b)] -> Vector a
+ RIO.Vector.Boxed.Partial: accumulate :: () => (a -> b -> a) -> Vector a -> Vector (Int, b) -> Vector a
+ RIO.Vector.Boxed.Partial: accumulate_ :: () => (a -> b -> a) -> Vector a -> Vector Int -> Vector b -> Vector a
+ RIO.Vector.Boxed.Partial: backpermute :: () => Vector a -> Vector Int -> Vector a
+ RIO.Vector.Boxed.Partial: fold1M :: Monad m => (a -> a -> m a) -> Vector a -> m a
+ RIO.Vector.Boxed.Partial: fold1M' :: Monad m => (a -> a -> m a) -> Vector a -> m a
+ RIO.Vector.Boxed.Partial: fold1M'_ :: Monad m => (a -> a -> m a) -> Vector a -> m ()
+ RIO.Vector.Boxed.Partial: fold1M_ :: Monad m => (a -> a -> m a) -> Vector a -> m ()
+ RIO.Vector.Boxed.Partial: foldl1 :: () => (a -> a -> a) -> Vector a -> a
+ RIO.Vector.Boxed.Partial: foldl1' :: () => (a -> a -> a) -> Vector a -> a
+ RIO.Vector.Boxed.Partial: foldr1 :: () => (a -> a -> a) -> Vector a -> a
+ RIO.Vector.Boxed.Partial: foldr1' :: () => (a -> a -> a) -> Vector a -> a
+ RIO.Vector.Boxed.Partial: head :: () => Vector a -> a
+ RIO.Vector.Boxed.Partial: headM :: Monad m => Vector a -> m a
+ RIO.Vector.Boxed.Partial: indexM :: Monad m => Vector a -> Int -> m a
+ RIO.Vector.Boxed.Partial: init :: () => Vector a -> Vector a
+ RIO.Vector.Boxed.Partial: last :: () => Vector a -> a
+ RIO.Vector.Boxed.Partial: lastM :: Monad m => Vector a -> m a
+ RIO.Vector.Boxed.Partial: maxIndex :: Ord a => Vector a -> Int
+ RIO.Vector.Boxed.Partial: maxIndexBy :: () => (a -> a -> Ordering) -> Vector a -> Int
+ RIO.Vector.Boxed.Partial: maximum :: Ord a => Vector a -> a
+ RIO.Vector.Boxed.Partial: maximumBy :: () => (a -> a -> Ordering) -> Vector a -> a
+ RIO.Vector.Boxed.Partial: minIndex :: Ord a => Vector a -> Int
+ RIO.Vector.Boxed.Partial: minIndexBy :: () => (a -> a -> Ordering) -> Vector a -> Int
+ RIO.Vector.Boxed.Partial: minimum :: Ord a => Vector a -> a
+ RIO.Vector.Boxed.Partial: minimumBy :: () => (a -> a -> Ordering) -> Vector a -> a
+ RIO.Vector.Boxed.Partial: scanl1 :: () => (a -> a -> a) -> Vector a -> Vector a
+ RIO.Vector.Boxed.Partial: scanl1' :: () => (a -> a -> a) -> Vector a -> Vector a
+ RIO.Vector.Boxed.Partial: scanr1 :: () => (a -> a -> a) -> Vector a -> Vector a
+ RIO.Vector.Boxed.Partial: scanr1' :: () => (a -> a -> a) -> Vector a -> Vector a
+ RIO.Vector.Boxed.Partial: tail :: () => Vector a -> Vector a
+ RIO.Vector.Boxed.Partial: update :: () => Vector a -> Vector (Int, a) -> Vector a
+ RIO.Vector.Boxed.Partial: update_ :: () => Vector a -> Vector Int -> Vector a -> Vector a
+ RIO.Vector.Boxed.Unsafe: unsafeAccum :: () => (a -> b -> a) -> Vector a -> [(Int, b)] -> Vector a
+ RIO.Vector.Boxed.Unsafe: unsafeAccumulate :: () => (a -> b -> a) -> Vector a -> Vector (Int, b) -> Vector a
+ RIO.Vector.Boxed.Unsafe: unsafeAccumulate_ :: () => (a -> b -> a) -> Vector a -> Vector Int -> Vector b -> Vector a
+ RIO.Vector.Boxed.Unsafe: unsafeBackpermute :: () => Vector a -> Vector Int -> Vector a
+ RIO.Vector.Boxed.Unsafe: unsafeCopy :: PrimMonad m => MVector PrimState m a -> Vector a -> m ()
+ RIO.Vector.Boxed.Unsafe: unsafeDrop :: () => Int -> Vector a -> Vector a
+ RIO.Vector.Boxed.Unsafe: unsafeFreeze :: PrimMonad m => MVector PrimState m a -> m Vector a
+ RIO.Vector.Boxed.Unsafe: unsafeHead :: () => Vector a -> a
+ RIO.Vector.Boxed.Unsafe: unsafeHeadM :: Monad m => Vector a -> m a
+ RIO.Vector.Boxed.Unsafe: unsafeIndex :: () => Vector a -> Int -> a
+ RIO.Vector.Boxed.Unsafe: unsafeIndexM :: Monad m => Vector a -> Int -> m a
+ RIO.Vector.Boxed.Unsafe: unsafeInit :: () => Vector a -> Vector a
+ RIO.Vector.Boxed.Unsafe: unsafeLast :: () => Vector a -> a
+ RIO.Vector.Boxed.Unsafe: unsafeLastM :: Monad m => Vector a -> m a
+ RIO.Vector.Boxed.Unsafe: unsafeSlice :: () => Int -> Int -> Vector a -> Vector a
+ RIO.Vector.Boxed.Unsafe: unsafeTail :: () => Vector a -> Vector a
+ RIO.Vector.Boxed.Unsafe: unsafeTake :: () => Int -> Vector a -> Vector a
+ RIO.Vector.Boxed.Unsafe: unsafeThaw :: PrimMonad m => Vector a -> m MVector PrimState m a
+ RIO.Vector.Boxed.Unsafe: unsafeUpd :: () => Vector a -> [(Int, a)] -> Vector a
+ RIO.Vector.Boxed.Unsafe: unsafeUpdate :: () => Vector a -> Vector (Int, a) -> Vector a
+ RIO.Vector.Boxed.Unsafe: unsafeUpdate_ :: () => Vector a -> Vector Int -> Vector a -> Vector a
+ RIO.Vector.Partial: (!) :: Vector v a => v a -> Int -> a
+ RIO.Vector.Partial: (//) :: Vector v a => v a -> [(Int, a)] -> v a
+ RIO.Vector.Partial: accum :: Vector v a => (a -> b -> a) -> v a -> [(Int, b)] -> v a
+ RIO.Vector.Partial: accumulate :: (Vector v a, Vector v (Int, b)) => (a -> b -> a) -> v a -> v (Int, b) -> v a
+ RIO.Vector.Partial: accumulate_ :: (Vector v a, Vector v Int, Vector v b) => (a -> b -> a) -> v a -> v Int -> v b -> v a
+ RIO.Vector.Partial: backpermute :: (Vector v a, Vector v Int) => v a -> v Int -> v a
+ RIO.Vector.Partial: fold1M :: (Monad m, Vector v a) => (a -> a -> m a) -> v a -> m a
+ RIO.Vector.Partial: fold1M' :: (Monad m, Vector v a) => (a -> a -> m a) -> v a -> m a
+ RIO.Vector.Partial: fold1M'_ :: (Monad m, Vector v a) => (a -> a -> m a) -> v a -> m ()
+ RIO.Vector.Partial: fold1M_ :: (Monad m, Vector v a) => (a -> a -> m a) -> v a -> m ()
+ RIO.Vector.Partial: foldl1 :: Vector v a => (a -> a -> a) -> v a -> a
+ RIO.Vector.Partial: foldl1' :: Vector v a => (a -> a -> a) -> v a -> a
+ RIO.Vector.Partial: foldr1 :: Vector v a => (a -> a -> a) -> v a -> a
+ RIO.Vector.Partial: foldr1' :: Vector v a => (a -> a -> a) -> v a -> a
+ RIO.Vector.Partial: head :: Vector v a => v a -> a
+ RIO.Vector.Partial: headM :: (Vector v a, Monad m) => v a -> m a
+ RIO.Vector.Partial: indexM :: (Vector v a, Monad m) => v a -> Int -> m a
+ RIO.Vector.Partial: infixl 9 !
+ RIO.Vector.Partial: init :: Vector v a => v a -> v a
+ RIO.Vector.Partial: last :: Vector v a => v a -> a
+ RIO.Vector.Partial: lastM :: (Vector v a, Monad m) => v a -> m a
+ RIO.Vector.Partial: maxIndex :: (Vector v a, Ord a) => v a -> Int
+ RIO.Vector.Partial: maxIndexBy :: Vector v a => (a -> a -> Ordering) -> v a -> Int
+ RIO.Vector.Partial: maximum :: (Vector v a, Ord a) => v a -> a
+ RIO.Vector.Partial: maximumBy :: Vector v a => (a -> a -> Ordering) -> v a -> a
+ RIO.Vector.Partial: minIndex :: (Vector v a, Ord a) => v a -> Int
+ RIO.Vector.Partial: minIndexBy :: Vector v a => (a -> a -> Ordering) -> v a -> Int
+ RIO.Vector.Partial: minimum :: (Vector v a, Ord a) => v a -> a
+ RIO.Vector.Partial: minimumBy :: Vector v a => (a -> a -> Ordering) -> v a -> a
+ RIO.Vector.Partial: scanl1 :: Vector v a => (a -> a -> a) -> v a -> v a
+ RIO.Vector.Partial: scanl1' :: Vector v a => (a -> a -> a) -> v a -> v a
+ RIO.Vector.Partial: scanr1 :: Vector v a => (a -> a -> a) -> v a -> v a
+ RIO.Vector.Partial: scanr1' :: Vector v a => (a -> a -> a) -> v a -> v a
+ RIO.Vector.Partial: tail :: Vector v a => v a -> v a
+ RIO.Vector.Partial: update :: (Vector v a, Vector v (Int, a)) => v a -> v (Int, a) -> v a
+ RIO.Vector.Partial: update_ :: (Vector v a, Vector v Int) => v a -> v Int -> v a -> v a
+ RIO.Vector.Storable: (!?) :: Storable a => Vector a -> Int -> Maybe a
+ RIO.Vector.Storable: (++) :: Storable a => Vector a -> Vector a -> Vector a
+ RIO.Vector.Storable: MVector :: {-# UNPACK #-} !Int -> {-# UNPACK #-} !ForeignPtr a -> MVector s a
+ RIO.Vector.Storable: all :: Storable a => (a -> Bool) -> Vector a -> Bool
+ RIO.Vector.Storable: and :: Vector Bool -> Bool
+ RIO.Vector.Storable: any :: Storable a => (a -> Bool) -> Vector a -> Bool
+ RIO.Vector.Storable: break :: Storable a => (a -> Bool) -> Vector a -> (Vector a, Vector a)
+ RIO.Vector.Storable: class Storable a
+ RIO.Vector.Storable: concat :: Storable a => [Vector a] -> Vector a
+ RIO.Vector.Storable: concatMap :: (Storable a, Storable b) => (a -> Vector b) -> Vector a -> Vector b
+ RIO.Vector.Storable: cons :: Storable a => a -> Vector a -> Vector a
+ RIO.Vector.Storable: constructN :: Storable a => Int -> (Vector a -> a) -> Vector a
+ RIO.Vector.Storable: constructrN :: Storable a => Int -> (Vector a -> a) -> Vector a
+ RIO.Vector.Storable: convert :: (Vector v a, Vector w a) => v a -> w a
+ RIO.Vector.Storable: copy :: (Storable a, PrimMonad m) => MVector PrimState m a -> Vector a -> m ()
+ RIO.Vector.Storable: create :: Storable a => (forall s. () => ST s MVector s a) -> Vector a
+ RIO.Vector.Storable: createT :: (Traversable f, Storable a) => (forall s. () => ST s f MVector s a) -> f Vector a
+ RIO.Vector.Storable: data MVector s a :: * -> * -> *
+ RIO.Vector.Storable: data Vector a :: * -> *
+ RIO.Vector.Storable: drop :: Storable a => Int -> Vector a -> Vector a
+ RIO.Vector.Storable: dropWhile :: Storable a => (a -> Bool) -> Vector a -> Vector a
+ RIO.Vector.Storable: elem :: (Storable a, Eq a) => a -> Vector a -> Bool
+ RIO.Vector.Storable: elemIndex :: (Storable a, Eq a) => a -> Vector a -> Maybe Int
+ RIO.Vector.Storable: elemIndices :: (Storable a, Eq a) => a -> Vector a -> Vector Int
+ RIO.Vector.Storable: empty :: Storable a => Vector a
+ RIO.Vector.Storable: enumFromN :: (Storable a, Num a) => a -> Int -> Vector a
+ RIO.Vector.Storable: enumFromStepN :: (Storable a, Num a) => a -> a -> Int -> Vector a
+ RIO.Vector.Storable: enumFromThenTo :: (Storable a, Enum a) => a -> a -> a -> Vector a
+ RIO.Vector.Storable: enumFromTo :: (Storable a, Enum a) => a -> a -> Vector a
+ RIO.Vector.Storable: filter :: Storable a => (a -> Bool) -> Vector a -> Vector a
+ RIO.Vector.Storable: filterM :: (Monad m, Storable a) => (a -> m Bool) -> Vector a -> m Vector a
+ RIO.Vector.Storable: find :: Storable a => (a -> Bool) -> Vector a -> Maybe a
+ RIO.Vector.Storable: findIndex :: Storable a => (a -> Bool) -> Vector a -> Maybe Int
+ RIO.Vector.Storable: findIndices :: Storable a => (a -> Bool) -> Vector a -> Vector Int
+ RIO.Vector.Storable: foldM :: (Monad m, Storable b) => (a -> b -> m a) -> a -> Vector b -> m a
+ RIO.Vector.Storable: foldM' :: (Monad m, Storable b) => (a -> b -> m a) -> a -> Vector b -> m a
+ RIO.Vector.Storable: foldM'_ :: (Monad m, Storable b) => (a -> b -> m a) -> a -> Vector b -> m ()
+ RIO.Vector.Storable: foldM_ :: (Monad m, Storable b) => (a -> b -> m a) -> a -> Vector b -> m ()
+ RIO.Vector.Storable: foldl :: Storable b => (a -> b -> a) -> a -> Vector b -> a
+ RIO.Vector.Storable: foldl' :: Storable b => (a -> b -> a) -> a -> Vector b -> a
+ RIO.Vector.Storable: foldr :: Storable a => (a -> b -> b) -> b -> Vector a -> b
+ RIO.Vector.Storable: foldr' :: Storable a => (a -> b -> b) -> b -> Vector a -> b
+ RIO.Vector.Storable: forM :: (Monad m, Storable a, Storable b) => Vector a -> (a -> m b) -> m Vector b
+ RIO.Vector.Storable: forM_ :: (Monad m, Storable a) => Vector a -> (a -> m b) -> m ()
+ RIO.Vector.Storable: force :: Storable a => Vector a -> Vector a
+ RIO.Vector.Storable: freeze :: (Storable a, PrimMonad m) => MVector PrimState m a -> m Vector a
+ RIO.Vector.Storable: fromList :: Storable a => [a] -> Vector a
+ RIO.Vector.Storable: fromListN :: Storable a => Int -> [a] -> Vector a
+ RIO.Vector.Storable: generate :: Storable a => Int -> (Int -> a) -> Vector a
+ RIO.Vector.Storable: generateM :: (Monad m, Storable a) => Int -> (Int -> m a) -> m Vector a
+ RIO.Vector.Storable: ifilter :: Storable a => (Int -> a -> Bool) -> Vector a -> Vector a
+ RIO.Vector.Storable: ifoldl :: Storable b => (a -> Int -> b -> a) -> a -> Vector b -> a
+ RIO.Vector.Storable: ifoldl' :: Storable b => (a -> Int -> b -> a) -> a -> Vector b -> a
+ RIO.Vector.Storable: ifoldr :: Storable a => (Int -> a -> b -> b) -> b -> Vector a -> b
+ RIO.Vector.Storable: ifoldr' :: Storable a => (Int -> a -> b -> b) -> b -> Vector a -> b
+ RIO.Vector.Storable: imap :: (Storable a, Storable b) => (Int -> a -> b) -> Vector a -> Vector b
+ RIO.Vector.Storable: imapMaybe :: (Storable a, Storable b) => (Int -> a -> Maybe b) -> Vector a -> Vector b
+ RIO.Vector.Storable: infix 4 `notElem`
+ RIO.Vector.Storable: infixr 5 ++
+ RIO.Vector.Storable: iterateN :: Storable a => Int -> (a -> a) -> a -> Vector a
+ RIO.Vector.Storable: iterateNM :: (Monad m, Storable a) => Int -> (a -> m a) -> a -> m Vector a
+ RIO.Vector.Storable: izipWith :: (Storable a, Storable b, Storable c) => (Int -> a -> b -> c) -> Vector a -> Vector b -> Vector c
+ RIO.Vector.Storable: izipWith3 :: (Storable a, Storable b, Storable c, Storable d) => (Int -> a -> b -> c -> d) -> Vector a -> Vector b -> Vector c -> Vector d
+ RIO.Vector.Storable: izipWith4 :: (Storable a, Storable b, Storable c, Storable d, Storable e) => (Int -> a -> b -> c -> d -> e) -> Vector a -> Vector b -> Vector c -> Vector d -> Vector e
+ RIO.Vector.Storable: izipWith5 :: (Storable a, Storable b, Storable c, Storable d, Storable e, Storable f) => (Int -> a -> b -> c -> d -> e -> f) -> Vector a -> Vector b -> Vector c -> Vector d -> Vector e -> Vector f
+ RIO.Vector.Storable: izipWith6 :: (Storable a, Storable b, Storable c, Storable d, Storable e, Storable f, Storable g) => (Int -> a -> b -> c -> d -> e -> f -> g) -> Vector a -> Vector b -> Vector c -> Vector d -> Vector e -> Vector f -> Vector g
+ RIO.Vector.Storable: length :: Storable a => Vector a -> Int
+ RIO.Vector.Storable: map :: (Storable a, Storable b) => (a -> b) -> Vector a -> Vector b
+ RIO.Vector.Storable: mapM :: (Monad m, Storable a, Storable b) => (a -> m b) -> Vector a -> m Vector b
+ RIO.Vector.Storable: mapM_ :: (Monad m, Storable a) => (a -> m b) -> Vector a -> m ()
+ RIO.Vector.Storable: mapMaybe :: (Storable a, Storable b) => (a -> Maybe b) -> Vector a -> Vector b
+ RIO.Vector.Storable: modify :: Storable a => (forall s. () => MVector s a -> ST s ()) -> Vector a -> Vector a
+ RIO.Vector.Storable: notElem :: (Storable a, Eq a) => a -> Vector a -> Bool
+ RIO.Vector.Storable: null :: Storable a => Vector a -> Bool
+ RIO.Vector.Storable: or :: Vector Bool -> Bool
+ RIO.Vector.Storable: partition :: Storable a => (a -> Bool) -> Vector a -> (Vector a, Vector a)
+ RIO.Vector.Storable: postscanl :: (Storable a, Storable b) => (a -> b -> a) -> a -> Vector b -> Vector a
+ RIO.Vector.Storable: postscanl' :: (Storable a, Storable b) => (a -> b -> a) -> a -> Vector b -> Vector a
+ RIO.Vector.Storable: postscanr :: (Storable a, Storable b) => (a -> b -> b) -> b -> Vector a -> Vector b
+ RIO.Vector.Storable: postscanr' :: (Storable a, Storable b) => (a -> b -> b) -> b -> Vector a -> Vector b
+ RIO.Vector.Storable: prescanl :: (Storable a, Storable b) => (a -> b -> a) -> a -> Vector b -> Vector a
+ RIO.Vector.Storable: prescanl' :: (Storable a, Storable b) => (a -> b -> a) -> a -> Vector b -> Vector a
+ RIO.Vector.Storable: prescanr :: (Storable a, Storable b) => (a -> b -> b) -> b -> Vector a -> Vector b
+ RIO.Vector.Storable: prescanr' :: (Storable a, Storable b) => (a -> b -> b) -> b -> Vector a -> Vector b
+ RIO.Vector.Storable: product :: (Storable a, Num a) => Vector a -> a
+ RIO.Vector.Storable: replicate :: Storable a => Int -> a -> Vector a
+ RIO.Vector.Storable: replicateM :: (Monad m, Storable a) => Int -> m a -> m Vector a
+ RIO.Vector.Storable: reverse :: Storable a => Vector a -> Vector a
+ RIO.Vector.Storable: scanl :: (Storable a, Storable b) => (a -> b -> a) -> a -> Vector b -> Vector a
+ RIO.Vector.Storable: scanl' :: (Storable a, Storable b) => (a -> b -> a) -> a -> Vector b -> Vector a
+ RIO.Vector.Storable: scanr :: (Storable a, Storable b) => (a -> b -> b) -> b -> Vector a -> Vector b
+ RIO.Vector.Storable: scanr' :: (Storable a, Storable b) => (a -> b -> b) -> b -> Vector a -> Vector b
+ RIO.Vector.Storable: singleton :: Storable a => a -> Vector a
+ RIO.Vector.Storable: slice :: Storable a => Int -> Int -> Vector a -> Vector a
+ RIO.Vector.Storable: snoc :: Storable a => Vector a -> a -> Vector a
+ RIO.Vector.Storable: span :: Storable a => (a -> Bool) -> Vector a -> (Vector a, Vector a)
+ RIO.Vector.Storable: splitAt :: Storable a => Int -> Vector a -> (Vector a, Vector a)
+ RIO.Vector.Storable: sum :: (Storable a, Num a) => Vector a -> a
+ RIO.Vector.Storable: take :: Storable a => Int -> Vector a -> Vector a
+ RIO.Vector.Storable: takeWhile :: Storable a => (a -> Bool) -> Vector a -> Vector a
+ RIO.Vector.Storable: thaw :: (Storable a, PrimMonad m) => Vector a -> m MVector PrimState m a
+ RIO.Vector.Storable: toList :: Storable a => Vector a -> [a]
+ RIO.Vector.Storable: unfoldr :: Storable a => (b -> Maybe (a, b)) -> b -> Vector a
+ RIO.Vector.Storable: unfoldrM :: (Monad m, Storable a) => (b -> m Maybe (a, b)) -> b -> m Vector a
+ RIO.Vector.Storable: unfoldrN :: Storable a => Int -> (b -> Maybe (a, b)) -> b -> Vector a
+ RIO.Vector.Storable: unfoldrNM :: (Monad m, Storable a) => Int -> (b -> m Maybe (a, b)) -> b -> m Vector a
+ RIO.Vector.Storable: uniq :: (Storable a, Eq a) => Vector a -> Vector a
+ RIO.Vector.Storable: unstablePartition :: Storable a => (a -> Bool) -> Vector a -> (Vector a, Vector a)
+ RIO.Vector.Storable: zipWith :: (Storable a, Storable b, Storable c) => (a -> b -> c) -> Vector a -> Vector b -> Vector c
+ RIO.Vector.Storable: zipWith3 :: (Storable a, Storable b, Storable c, Storable d) => (a -> b -> c -> d) -> Vector a -> Vector b -> Vector c -> Vector d
+ RIO.Vector.Storable: zipWith4 :: (Storable a, Storable b, Storable c, Storable d, Storable e) => (a -> b -> c -> d -> e) -> Vector a -> Vector b -> Vector c -> Vector d -> Vector e
+ RIO.Vector.Storable: zipWith5 :: (Storable a, Storable b, Storable c, Storable d, Storable e, Storable f) => (a -> b -> c -> d -> e -> f) -> Vector a -> Vector b -> Vector c -> Vector d -> Vector e -> Vector f
+ RIO.Vector.Storable: zipWith6 :: (Storable a, Storable b, Storable c, Storable d, Storable e, Storable f, Storable g) => (a -> b -> c -> d -> e -> f -> g) -> Vector a -> Vector b -> Vector c -> Vector d -> Vector e -> Vector f -> Vector g
+ RIO.Vector.Storable: zipWithM :: (Monad m, Storable a, Storable b, Storable c) => (a -> b -> m c) -> Vector a -> Vector b -> m Vector c
+ RIO.Vector.Storable: zipWithM_ :: (Monad m, Storable a, Storable b) => (a -> b -> m c) -> Vector a -> Vector b -> m ()
+ RIO.Vector.Storable.Partial: (!) :: Storable a => Vector a -> Int -> a
+ RIO.Vector.Storable.Partial: (//) :: Storable a => Vector a -> [(Int, a)] -> Vector a
+ RIO.Vector.Storable.Partial: accum :: Storable a => (a -> b -> a) -> Vector a -> [(Int, b)] -> Vector a
+ RIO.Vector.Storable.Partial: accumulate_ :: (Storable a, Storable b) => (a -> b -> a) -> Vector a -> Vector Int -> Vector b -> Vector a
+ RIO.Vector.Storable.Partial: backpermute :: Storable a => Vector a -> Vector Int -> Vector a
+ RIO.Vector.Storable.Partial: fold1M :: (Monad m, Storable a) => (a -> a -> m a) -> Vector a -> m a
+ RIO.Vector.Storable.Partial: fold1M' :: (Monad m, Storable a) => (a -> a -> m a) -> Vector a -> m a
+ RIO.Vector.Storable.Partial: fold1M'_ :: (Monad m, Storable a) => (a -> a -> m a) -> Vector a -> m ()
+ RIO.Vector.Storable.Partial: fold1M_ :: (Monad m, Storable a) => (a -> a -> m a) -> Vector a -> m ()
+ RIO.Vector.Storable.Partial: foldl1 :: Storable a => (a -> a -> a) -> Vector a -> a
+ RIO.Vector.Storable.Partial: foldl1' :: Storable a => (a -> a -> a) -> Vector a -> a
+ RIO.Vector.Storable.Partial: foldr1 :: Storable a => (a -> a -> a) -> Vector a -> a
+ RIO.Vector.Storable.Partial: foldr1' :: Storable a => (a -> a -> a) -> Vector a -> a
+ RIO.Vector.Storable.Partial: head :: Storable a => Vector a -> a
+ RIO.Vector.Storable.Partial: headM :: (Storable a, Monad m) => Vector a -> m a
+ RIO.Vector.Storable.Partial: indexM :: (Storable a, Monad m) => Vector a -> Int -> m a
+ RIO.Vector.Storable.Partial: init :: Storable a => Vector a -> Vector a
+ RIO.Vector.Storable.Partial: last :: Storable a => Vector a -> a
+ RIO.Vector.Storable.Partial: lastM :: (Storable a, Monad m) => Vector a -> m a
+ RIO.Vector.Storable.Partial: maxIndex :: (Storable a, Ord a) => Vector a -> Int
+ RIO.Vector.Storable.Partial: maxIndexBy :: Storable a => (a -> a -> Ordering) -> Vector a -> Int
+ RIO.Vector.Storable.Partial: maximum :: (Storable a, Ord a) => Vector a -> a
+ RIO.Vector.Storable.Partial: maximumBy :: Storable a => (a -> a -> Ordering) -> Vector a -> a
+ RIO.Vector.Storable.Partial: minIndex :: (Storable a, Ord a) => Vector a -> Int
+ RIO.Vector.Storable.Partial: minIndexBy :: Storable a => (a -> a -> Ordering) -> Vector a -> Int
+ RIO.Vector.Storable.Partial: minimum :: (Storable a, Ord a) => Vector a -> a
+ RIO.Vector.Storable.Partial: minimumBy :: Storable a => (a -> a -> Ordering) -> Vector a -> a
+ RIO.Vector.Storable.Partial: scanl1 :: Storable a => (a -> a -> a) -> Vector a -> Vector a
+ RIO.Vector.Storable.Partial: scanl1' :: Storable a => (a -> a -> a) -> Vector a -> Vector a
+ RIO.Vector.Storable.Partial: scanr1 :: Storable a => (a -> a -> a) -> Vector a -> Vector a
+ RIO.Vector.Storable.Partial: scanr1' :: Storable a => (a -> a -> a) -> Vector a -> Vector a
+ RIO.Vector.Storable.Partial: tail :: Storable a => Vector a -> Vector a
+ RIO.Vector.Storable.Partial: update_ :: Storable a => Vector a -> Vector Int -> Vector a -> Vector a
+ RIO.Vector.Storable.Unsafe: unsafeAccum :: Storable a => (a -> b -> a) -> Vector a -> [(Int, b)] -> Vector a
+ RIO.Vector.Storable.Unsafe: unsafeAccumulate_ :: (Storable a, Storable b) => (a -> b -> a) -> Vector a -> Vector Int -> Vector b -> Vector a
+ RIO.Vector.Storable.Unsafe: unsafeBackpermute :: Storable a => Vector a -> Vector Int -> Vector a
+ RIO.Vector.Storable.Unsafe: unsafeCopy :: (Storable a, PrimMonad m) => MVector PrimState m a -> Vector a -> m ()
+ RIO.Vector.Storable.Unsafe: unsafeDrop :: Storable a => Int -> Vector a -> Vector a
+ RIO.Vector.Storable.Unsafe: unsafeFreeze :: (Storable a, PrimMonad m) => MVector PrimState m a -> m Vector a
+ RIO.Vector.Storable.Unsafe: unsafeFromForeignPtr :: Storable a => ForeignPtr a -> Int -> Int -> Vector a
+ RIO.Vector.Storable.Unsafe: unsafeFromForeignPtr0 :: Storable a => ForeignPtr a -> Int -> Vector a
+ RIO.Vector.Storable.Unsafe: unsafeHead :: Storable a => Vector a -> a
+ RIO.Vector.Storable.Unsafe: unsafeHeadM :: (Storable a, Monad m) => Vector a -> m a
+ RIO.Vector.Storable.Unsafe: unsafeIndex :: Storable a => Vector a -> Int -> a
+ RIO.Vector.Storable.Unsafe: unsafeIndexM :: (Storable a, Monad m) => Vector a -> Int -> m a
+ RIO.Vector.Storable.Unsafe: unsafeInit :: Storable a => Vector a -> Vector a
+ RIO.Vector.Storable.Unsafe: unsafeLast :: Storable a => Vector a -> a
+ RIO.Vector.Storable.Unsafe: unsafeLastM :: (Storable a, Monad m) => Vector a -> m a
+ RIO.Vector.Storable.Unsafe: unsafeSlice :: Storable a => Int -> Int -> Vector a -> Vector a
+ RIO.Vector.Storable.Unsafe: unsafeTail :: Storable a => Vector a -> Vector a
+ RIO.Vector.Storable.Unsafe: unsafeTake :: Storable a => Int -> Vector a -> Vector a
+ RIO.Vector.Storable.Unsafe: unsafeThaw :: (Storable a, PrimMonad m) => Vector a -> m MVector PrimState m a
+ RIO.Vector.Storable.Unsafe: unsafeToForeignPtr :: Storable a => Vector a -> (ForeignPtr a, Int, Int)
+ RIO.Vector.Storable.Unsafe: unsafeToForeignPtr0 :: Storable a => Vector a -> (ForeignPtr a, Int)
+ RIO.Vector.Storable.Unsafe: unsafeUpd :: Storable a => Vector a -> [(Int, a)] -> Vector a
+ RIO.Vector.Storable.Unsafe: unsafeUpdate_ :: Storable a => Vector a -> Vector Int -> Vector a -> Vector a
+ RIO.Vector.Storable.Unsafe: unsafeWith :: (MonadUnliftIO m, Storable a) => Vector a -> (Ptr a -> m b) -> m b
+ RIO.Vector.Unboxed: (!?) :: Unbox a => Vector a -> Int -> Maybe a
+ RIO.Vector.Unboxed: (++) :: Unbox a => Vector a -> Vector a -> Vector a
+ RIO.Vector.Unboxed: all :: Unbox a => (a -> Bool) -> Vector a -> Bool
+ RIO.Vector.Unboxed: and :: Vector Bool -> Bool
+ RIO.Vector.Unboxed: any :: Unbox a => (a -> Bool) -> Vector a -> Bool
+ RIO.Vector.Unboxed: break :: Unbox a => (a -> Bool) -> Vector a -> (Vector a, Vector a)
+ RIO.Vector.Unboxed: class (Vector Vector a, MVector MVector a) => Unbox a
+ RIO.Vector.Unboxed: concat :: Unbox a => [Vector a] -> Vector a
+ RIO.Vector.Unboxed: concatMap :: (Unbox a, Unbox b) => (a -> Vector b) -> Vector a -> Vector b
+ RIO.Vector.Unboxed: cons :: Unbox a => a -> Vector a -> Vector a
+ RIO.Vector.Unboxed: constructN :: Unbox a => Int -> (Vector a -> a) -> Vector a
+ RIO.Vector.Unboxed: constructrN :: Unbox a => Int -> (Vector a -> a) -> Vector a
+ RIO.Vector.Unboxed: convert :: (Vector v a, Vector w a) => v a -> w a
+ RIO.Vector.Unboxed: copy :: (Unbox a, PrimMonad m) => MVector PrimState m a -> Vector a -> m ()
+ RIO.Vector.Unboxed: create :: Unbox a => (forall s. () => ST s MVector s a) -> Vector a
+ RIO.Vector.Unboxed: createT :: (Traversable f, Unbox a) => (forall s. () => ST s f MVector s a) -> f Vector a
+ RIO.Vector.Unboxed: drop :: Unbox a => Int -> Vector a -> Vector a
+ RIO.Vector.Unboxed: dropWhile :: Unbox a => (a -> Bool) -> Vector a -> Vector a
+ RIO.Vector.Unboxed: elem :: (Unbox a, Eq a) => a -> Vector a -> Bool
+ RIO.Vector.Unboxed: elemIndex :: (Unbox a, Eq a) => a -> Vector a -> Maybe Int
+ RIO.Vector.Unboxed: elemIndices :: (Unbox a, Eq a) => a -> Vector a -> Vector Int
+ RIO.Vector.Unboxed: empty :: Unbox a => Vector a
+ RIO.Vector.Unboxed: enumFromN :: (Unbox a, Num a) => a -> Int -> Vector a
+ RIO.Vector.Unboxed: enumFromStepN :: (Unbox a, Num a) => a -> a -> Int -> Vector a
+ RIO.Vector.Unboxed: enumFromThenTo :: (Unbox a, Enum a) => a -> a -> a -> Vector a
+ RIO.Vector.Unboxed: enumFromTo :: (Unbox a, Enum a) => a -> a -> Vector a
+ RIO.Vector.Unboxed: filter :: Unbox a => (a -> Bool) -> Vector a -> Vector a
+ RIO.Vector.Unboxed: filterM :: (Monad m, Unbox a) => (a -> m Bool) -> Vector a -> m Vector a
+ RIO.Vector.Unboxed: find :: Unbox a => (a -> Bool) -> Vector a -> Maybe a
+ RIO.Vector.Unboxed: findIndex :: Unbox a => (a -> Bool) -> Vector a -> Maybe Int
+ RIO.Vector.Unboxed: findIndices :: Unbox a => (a -> Bool) -> Vector a -> Vector Int
+ RIO.Vector.Unboxed: foldM :: (Monad m, Unbox b) => (a -> b -> m a) -> a -> Vector b -> m a
+ RIO.Vector.Unboxed: foldM' :: (Monad m, Unbox b) => (a -> b -> m a) -> a -> Vector b -> m a
+ RIO.Vector.Unboxed: foldM'_ :: (Monad m, Unbox b) => (a -> b -> m a) -> a -> Vector b -> m ()
+ RIO.Vector.Unboxed: foldM_ :: (Monad m, Unbox b) => (a -> b -> m a) -> a -> Vector b -> m ()
+ RIO.Vector.Unboxed: foldl :: Unbox b => (a -> b -> a) -> a -> Vector b -> a
+ RIO.Vector.Unboxed: foldl' :: Unbox b => (a -> b -> a) -> a -> Vector b -> a
+ RIO.Vector.Unboxed: foldr :: Unbox a => (a -> b -> b) -> b -> Vector a -> b
+ RIO.Vector.Unboxed: foldr' :: Unbox a => (a -> b -> b) -> b -> Vector a -> b
+ RIO.Vector.Unboxed: forM :: (Monad m, Unbox a, Unbox b) => Vector a -> (a -> m b) -> m Vector b
+ RIO.Vector.Unboxed: forM_ :: (Monad m, Unbox a) => Vector a -> (a -> m b) -> m ()
+ RIO.Vector.Unboxed: force :: Unbox a => Vector a -> Vector a
+ RIO.Vector.Unboxed: freeze :: (Unbox a, PrimMonad m) => MVector PrimState m a -> m Vector a
+ RIO.Vector.Unboxed: fromList :: Unbox a => [a] -> Vector a
+ RIO.Vector.Unboxed: fromListN :: Unbox a => Int -> [a] -> Vector a
+ RIO.Vector.Unboxed: generate :: Unbox a => Int -> (Int -> a) -> Vector a
+ RIO.Vector.Unboxed: generateM :: (Monad m, Unbox a) => Int -> (Int -> m a) -> m Vector a
+ RIO.Vector.Unboxed: ifilter :: Unbox a => (Int -> a -> Bool) -> Vector a -> Vector a
+ RIO.Vector.Unboxed: ifoldM :: (Monad m, Unbox b) => (a -> Int -> b -> m a) -> a -> Vector b -> m a
+ RIO.Vector.Unboxed: ifoldM' :: (Monad m, Unbox b) => (a -> Int -> b -> m a) -> a -> Vector b -> m a
+ RIO.Vector.Unboxed: ifoldM'_ :: (Monad m, Unbox b) => (a -> Int -> b -> m a) -> a -> Vector b -> m ()
+ RIO.Vector.Unboxed: ifoldM_ :: (Monad m, Unbox b) => (a -> Int -> b -> m a) -> a -> Vector b -> m ()
+ RIO.Vector.Unboxed: ifoldl :: Unbox b => (a -> Int -> b -> a) -> a -> Vector b -> a
+ RIO.Vector.Unboxed: ifoldl' :: Unbox b => (a -> Int -> b -> a) -> a -> Vector b -> a
+ RIO.Vector.Unboxed: ifoldr :: Unbox a => (Int -> a -> b -> b) -> b -> Vector a -> b
+ RIO.Vector.Unboxed: ifoldr' :: Unbox a => (Int -> a -> b -> b) -> b -> Vector a -> b
+ RIO.Vector.Unboxed: imap :: (Unbox a, Unbox b) => (Int -> a -> b) -> Vector a -> Vector b
+ RIO.Vector.Unboxed: imapM :: (Monad m, Unbox a, Unbox b) => (Int -> a -> m b) -> Vector a -> m Vector b
+ RIO.Vector.Unboxed: imapM_ :: (Monad m, Unbox a) => (Int -> a -> m b) -> Vector a -> m ()
+ RIO.Vector.Unboxed: imapMaybe :: (Unbox a, Unbox b) => (Int -> a -> Maybe b) -> Vector a -> Vector b
+ RIO.Vector.Unboxed: indexed :: Unbox a => Vector a -> Vector (Int, a)
+ RIO.Vector.Unboxed: infix 4 `notElem`
+ RIO.Vector.Unboxed: infixr 5 ++
+ RIO.Vector.Unboxed: iterateN :: Unbox a => Int -> (a -> a) -> a -> Vector a
+ RIO.Vector.Unboxed: iterateNM :: (Monad m, Unbox a) => Int -> (a -> m a) -> a -> m Vector a
+ RIO.Vector.Unboxed: izipWith :: (Unbox a, Unbox b, Unbox c) => (Int -> a -> b -> c) -> Vector a -> Vector b -> Vector c
+ RIO.Vector.Unboxed: izipWith3 :: (Unbox a, Unbox b, Unbox c, Unbox d) => (Int -> a -> b -> c -> d) -> Vector a -> Vector b -> Vector c -> Vector d
+ RIO.Vector.Unboxed: izipWith4 :: (Unbox a, Unbox b, Unbox c, Unbox d, Unbox e) => (Int -> a -> b -> c -> d -> e) -> Vector a -> Vector b -> Vector c -> Vector d -> Vector e
+ RIO.Vector.Unboxed: izipWith5 :: (Unbox a, Unbox b, Unbox c, Unbox d, Unbox e, Unbox f) => (Int -> a -> b -> c -> d -> e -> f) -> Vector a -> Vector b -> Vector c -> Vector d -> Vector e -> Vector f
+ RIO.Vector.Unboxed: izipWith6 :: (Unbox a, Unbox b, Unbox c, Unbox d, Unbox e, Unbox f, Unbox g) => (Int -> a -> b -> c -> d -> e -> f -> g) -> Vector a -> Vector b -> Vector c -> Vector d -> Vector e -> Vector f -> Vector g
+ RIO.Vector.Unboxed: izipWithM :: (Monad m, Unbox a, Unbox b, Unbox c) => (Int -> a -> b -> m c) -> Vector a -> Vector b -> m Vector c
+ RIO.Vector.Unboxed: izipWithM_ :: (Monad m, Unbox a, Unbox b) => (Int -> a -> b -> m c) -> Vector a -> Vector b -> m ()
+ RIO.Vector.Unboxed: length :: Unbox a => Vector a -> Int
+ RIO.Vector.Unboxed: map :: (Unbox a, Unbox b) => (a -> b) -> Vector a -> Vector b
+ RIO.Vector.Unboxed: mapM :: (Monad m, Unbox a, Unbox b) => (a -> m b) -> Vector a -> m Vector b
+ RIO.Vector.Unboxed: mapM_ :: (Monad m, Unbox a) => (a -> m b) -> Vector a -> m ()
+ RIO.Vector.Unboxed: mapMaybe :: (Unbox a, Unbox b) => (a -> Maybe b) -> Vector a -> Vector b
+ RIO.Vector.Unboxed: modify :: Unbox a => (forall s. () => MVector s a -> ST s ()) -> Vector a -> Vector a
+ RIO.Vector.Unboxed: notElem :: (Unbox a, Eq a) => a -> Vector a -> Bool
+ RIO.Vector.Unboxed: null :: Unbox a => Vector a -> Bool
+ RIO.Vector.Unboxed: or :: Vector Bool -> Bool
+ RIO.Vector.Unboxed: partition :: Unbox a => (a -> Bool) -> Vector a -> (Vector a, Vector a)
+ RIO.Vector.Unboxed: postscanl :: (Unbox a, Unbox b) => (a -> b -> a) -> a -> Vector b -> Vector a
+ RIO.Vector.Unboxed: postscanl' :: (Unbox a, Unbox b) => (a -> b -> a) -> a -> Vector b -> Vector a
+ RIO.Vector.Unboxed: postscanr :: (Unbox a, Unbox b) => (a -> b -> b) -> b -> Vector a -> Vector b
+ RIO.Vector.Unboxed: postscanr' :: (Unbox a, Unbox b) => (a -> b -> b) -> b -> Vector a -> Vector b
+ RIO.Vector.Unboxed: prescanl :: (Unbox a, Unbox b) => (a -> b -> a) -> a -> Vector b -> Vector a
+ RIO.Vector.Unboxed: prescanl' :: (Unbox a, Unbox b) => (a -> b -> a) -> a -> Vector b -> Vector a
+ RIO.Vector.Unboxed: prescanr :: (Unbox a, Unbox b) => (a -> b -> b) -> b -> Vector a -> Vector b
+ RIO.Vector.Unboxed: prescanr' :: (Unbox a, Unbox b) => (a -> b -> b) -> b -> Vector a -> Vector b
+ RIO.Vector.Unboxed: product :: (Unbox a, Num a) => Vector a -> a
+ RIO.Vector.Unboxed: replicate :: Unbox a => Int -> a -> Vector a
+ RIO.Vector.Unboxed: replicateM :: (Monad m, Unbox a) => Int -> m a -> m Vector a
+ RIO.Vector.Unboxed: reverse :: Unbox a => Vector a -> Vector a
+ RIO.Vector.Unboxed: scanl :: (Unbox a, Unbox b) => (a -> b -> a) -> a -> Vector b -> Vector a
+ RIO.Vector.Unboxed: scanl' :: (Unbox a, Unbox b) => (a -> b -> a) -> a -> Vector b -> Vector a
+ RIO.Vector.Unboxed: scanr :: (Unbox a, Unbox b) => (a -> b -> b) -> b -> Vector a -> Vector b
+ RIO.Vector.Unboxed: scanr' :: (Unbox a, Unbox b) => (a -> b -> b) -> b -> Vector a -> Vector b
+ RIO.Vector.Unboxed: singleton :: Unbox a => a -> Vector a
+ RIO.Vector.Unboxed: slice :: Unbox a => Int -> Int -> Vector a -> Vector a
+ RIO.Vector.Unboxed: snoc :: Unbox a => Vector a -> a -> Vector a
+ RIO.Vector.Unboxed: span :: Unbox a => (a -> Bool) -> Vector a -> (Vector a, Vector a)
+ RIO.Vector.Unboxed: splitAt :: Unbox a => Int -> Vector a -> (Vector a, Vector a)
+ RIO.Vector.Unboxed: sum :: (Unbox a, Num a) => Vector a -> a
+ RIO.Vector.Unboxed: take :: Unbox a => Int -> Vector a -> Vector a
+ RIO.Vector.Unboxed: takeWhile :: Unbox a => (a -> Bool) -> Vector a -> Vector a
+ RIO.Vector.Unboxed: thaw :: (Unbox a, PrimMonad m) => Vector a -> m MVector PrimState m a
+ RIO.Vector.Unboxed: toList :: Unbox a => Vector a -> [a]
+ RIO.Vector.Unboxed: unfoldr :: Unbox a => (b -> Maybe (a, b)) -> b -> Vector a
+ RIO.Vector.Unboxed: unfoldrM :: (Monad m, Unbox a) => (b -> m Maybe (a, b)) -> b -> m Vector a
+ RIO.Vector.Unboxed: unfoldrN :: Unbox a => Int -> (b -> Maybe (a, b)) -> b -> Vector a
+ RIO.Vector.Unboxed: unfoldrNM :: (Monad m, Unbox a) => Int -> (b -> m Maybe (a, b)) -> b -> m Vector a
+ RIO.Vector.Unboxed: uniq :: (Unbox a, Eq a) => Vector a -> Vector a
+ RIO.Vector.Unboxed: unstablePartition :: Unbox a => (a -> Bool) -> Vector a -> (Vector a, Vector a)
+ RIO.Vector.Unboxed: unzip :: (Unbox a, Unbox b) => Vector (a, b) -> (Vector a, Vector b)
+ RIO.Vector.Unboxed: unzip3 :: (Unbox a, Unbox b, Unbox c) => Vector (a, b, c) -> (Vector a, Vector b, Vector c)
+ RIO.Vector.Unboxed: unzip4 :: (Unbox a, Unbox b, Unbox c, Unbox d) => Vector (a, b, c, d) -> (Vector a, Vector b, Vector c, Vector d)
+ RIO.Vector.Unboxed: unzip5 :: (Unbox a, Unbox b, Unbox c, Unbox d, Unbox e) => Vector (a, b, c, d, e) -> (Vector a, Vector b, Vector c, Vector d, Vector e)
+ RIO.Vector.Unboxed: unzip6 :: (Unbox a, Unbox b, Unbox c, Unbox d, Unbox e, Unbox f) => Vector (a, b, c, d, e, f) -> (Vector a, Vector b, Vector c, Vector d, Vector e, Vector f)
+ RIO.Vector.Unboxed: zip :: (Unbox a, Unbox b) => Vector a -> Vector b -> Vector (a, b)
+ RIO.Vector.Unboxed: zip3 :: (Unbox a, Unbox b, Unbox c) => Vector a -> Vector b -> Vector c -> Vector (a, b, c)
+ RIO.Vector.Unboxed: zip4 :: (Unbox a, Unbox b, Unbox c, Unbox d) => Vector a -> Vector b -> Vector c -> Vector d -> Vector (a, b, c, d)
+ RIO.Vector.Unboxed: zip5 :: (Unbox a, Unbox b, Unbox c, Unbox d, Unbox e) => Vector a -> Vector b -> Vector c -> Vector d -> Vector e -> Vector (a, b, c, d, e)
+ RIO.Vector.Unboxed: zip6 :: (Unbox a, Unbox b, Unbox c, Unbox d, Unbox e, Unbox f) => Vector a -> Vector b -> Vector c -> Vector d -> Vector e -> Vector f -> Vector (a, b, c, d, e, f)
+ RIO.Vector.Unboxed: zipWith :: (Unbox a, Unbox b, Unbox c) => (a -> b -> c) -> Vector a -> Vector b -> Vector c
+ RIO.Vector.Unboxed: zipWith3 :: (Unbox a, Unbox b, Unbox c, Unbox d) => (a -> b -> c -> d) -> Vector a -> Vector b -> Vector c -> Vector d
+ RIO.Vector.Unboxed: zipWith4 :: (Unbox a, Unbox b, Unbox c, Unbox d, Unbox e) => (a -> b -> c -> d -> e) -> Vector a -> Vector b -> Vector c -> Vector d -> Vector e
+ RIO.Vector.Unboxed: zipWith5 :: (Unbox a, Unbox b, Unbox c, Unbox d, Unbox e, Unbox f) => (a -> b -> c -> d -> e -> f) -> Vector a -> Vector b -> Vector c -> Vector d -> Vector e -> Vector f
+ RIO.Vector.Unboxed: zipWith6 :: (Unbox a, Unbox b, Unbox c, Unbox d, Unbox e, Unbox f, Unbox g) => (a -> b -> c -> d -> e -> f -> g) -> Vector a -> Vector b -> Vector c -> Vector d -> Vector e -> Vector f -> Vector g
+ RIO.Vector.Unboxed: zipWithM :: (Monad m, Unbox a, Unbox b, Unbox c) => (a -> b -> m c) -> Vector a -> Vector b -> m Vector c
+ RIO.Vector.Unboxed: zipWithM_ :: (Monad m, Unbox a, Unbox b) => (a -> b -> m c) -> Vector a -> Vector b -> m ()
+ RIO.Vector.Unboxed.Partial: (!) :: Unbox a => Vector a -> Int -> a
+ RIO.Vector.Unboxed.Partial: (//) :: Unbox a => Vector a -> [(Int, a)] -> Vector a
+ RIO.Vector.Unboxed.Partial: accum :: Unbox a => (a -> b -> a) -> Vector a -> [(Int, b)] -> Vector a
+ RIO.Vector.Unboxed.Partial: accumulate :: (Unbox a, Unbox b) => (a -> b -> a) -> Vector a -> Vector (Int, b) -> Vector a
+ RIO.Vector.Unboxed.Partial: accumulate_ :: (Unbox a, Unbox b) => (a -> b -> a) -> Vector a -> Vector Int -> Vector b -> Vector a
+ RIO.Vector.Unboxed.Partial: backpermute :: Unbox a => Vector a -> Vector Int -> Vector a
+ RIO.Vector.Unboxed.Partial: fold1M :: (Monad m, Unbox a) => (a -> a -> m a) -> Vector a -> m a
+ RIO.Vector.Unboxed.Partial: fold1M' :: (Monad m, Unbox a) => (a -> a -> m a) -> Vector a -> m a
+ RIO.Vector.Unboxed.Partial: fold1M'_ :: (Monad m, Unbox a) => (a -> a -> m a) -> Vector a -> m ()
+ RIO.Vector.Unboxed.Partial: fold1M_ :: (Monad m, Unbox a) => (a -> a -> m a) -> Vector a -> m ()
+ RIO.Vector.Unboxed.Partial: foldl1 :: Unbox a => (a -> a -> a) -> Vector a -> a
+ RIO.Vector.Unboxed.Partial: foldl1' :: Unbox a => (a -> a -> a) -> Vector a -> a
+ RIO.Vector.Unboxed.Partial: foldr1 :: Unbox a => (a -> a -> a) -> Vector a -> a
+ RIO.Vector.Unboxed.Partial: foldr1' :: Unbox a => (a -> a -> a) -> Vector a -> a
+ RIO.Vector.Unboxed.Partial: head :: Unbox a => Vector a -> a
+ RIO.Vector.Unboxed.Partial: headM :: (Unbox a, Monad m) => Vector a -> m a
+ RIO.Vector.Unboxed.Partial: indexM :: (Unbox a, Monad m) => Vector a -> Int -> m a
+ RIO.Vector.Unboxed.Partial: init :: Unbox a => Vector a -> Vector a
+ RIO.Vector.Unboxed.Partial: last :: Unbox a => Vector a -> a
+ RIO.Vector.Unboxed.Partial: lastM :: (Unbox a, Monad m) => Vector a -> m a
+ RIO.Vector.Unboxed.Partial: maxIndex :: (Unbox a, Ord a) => Vector a -> Int
+ RIO.Vector.Unboxed.Partial: maxIndexBy :: Unbox a => (a -> a -> Ordering) -> Vector a -> Int
+ RIO.Vector.Unboxed.Partial: maximum :: (Unbox a, Ord a) => Vector a -> a
+ RIO.Vector.Unboxed.Partial: maximumBy :: Unbox a => (a -> a -> Ordering) -> Vector a -> a
+ RIO.Vector.Unboxed.Partial: minIndex :: (Unbox a, Ord a) => Vector a -> Int
+ RIO.Vector.Unboxed.Partial: minIndexBy :: Unbox a => (a -> a -> Ordering) -> Vector a -> Int
+ RIO.Vector.Unboxed.Partial: minimum :: (Unbox a, Ord a) => Vector a -> a
+ RIO.Vector.Unboxed.Partial: minimumBy :: Unbox a => (a -> a -> Ordering) -> Vector a -> a
+ RIO.Vector.Unboxed.Partial: scanl1 :: Unbox a => (a -> a -> a) -> Vector a -> Vector a
+ RIO.Vector.Unboxed.Partial: scanl1' :: Unbox a => (a -> a -> a) -> Vector a -> Vector a
+ RIO.Vector.Unboxed.Partial: scanr1 :: Unbox a => (a -> a -> a) -> Vector a -> Vector a
+ RIO.Vector.Unboxed.Partial: scanr1' :: Unbox a => (a -> a -> a) -> Vector a -> Vector a
+ RIO.Vector.Unboxed.Partial: tail :: Unbox a => Vector a -> Vector a
+ RIO.Vector.Unboxed.Partial: update :: Unbox a => Vector a -> Vector (Int, a) -> Vector a
+ RIO.Vector.Unboxed.Partial: update_ :: Unbox a => Vector a -> Vector Int -> Vector a -> Vector a
+ RIO.Vector.Unboxed.Unsafe: unsafeAccum :: Unbox a => (a -> b -> a) -> Vector a -> [(Int, b)] -> Vector a
+ RIO.Vector.Unboxed.Unsafe: unsafeAccumulate :: (Unbox a, Unbox b) => (a -> b -> a) -> Vector a -> Vector (Int, b) -> Vector a
+ RIO.Vector.Unboxed.Unsafe: unsafeAccumulate_ :: (Unbox a, Unbox b) => (a -> b -> a) -> Vector a -> Vector Int -> Vector b -> Vector a
+ RIO.Vector.Unboxed.Unsafe: unsafeBackpermute :: Unbox a => Vector a -> Vector Int -> Vector a
+ RIO.Vector.Unboxed.Unsafe: unsafeCopy :: (Unbox a, PrimMonad m) => MVector PrimState m a -> Vector a -> m ()
+ RIO.Vector.Unboxed.Unsafe: unsafeDrop :: Unbox a => Int -> Vector a -> Vector a
+ RIO.Vector.Unboxed.Unsafe: unsafeFreeze :: (Unbox a, PrimMonad m) => MVector PrimState m a -> m Vector a
+ RIO.Vector.Unboxed.Unsafe: unsafeHead :: Unbox a => Vector a -> a
+ RIO.Vector.Unboxed.Unsafe: unsafeHeadM :: (Unbox a, Monad m) => Vector a -> m a
+ RIO.Vector.Unboxed.Unsafe: unsafeIndex :: Unbox a => Vector a -> Int -> a
+ RIO.Vector.Unboxed.Unsafe: unsafeIndexM :: (Unbox a, Monad m) => Vector a -> Int -> m a
+ RIO.Vector.Unboxed.Unsafe: unsafeInit :: Unbox a => Vector a -> Vector a
+ RIO.Vector.Unboxed.Unsafe: unsafeLast :: Unbox a => Vector a -> a
+ RIO.Vector.Unboxed.Unsafe: unsafeLastM :: (Unbox a, Monad m) => Vector a -> m a
+ RIO.Vector.Unboxed.Unsafe: unsafeSlice :: Unbox a => Int -> Int -> Vector a -> Vector a
+ RIO.Vector.Unboxed.Unsafe: unsafeTail :: Unbox a => Vector a -> Vector a
+ RIO.Vector.Unboxed.Unsafe: unsafeTake :: Unbox a => Int -> Vector a -> Vector a
+ RIO.Vector.Unboxed.Unsafe: unsafeThaw :: (Unbox a, PrimMonad m) => Vector a -> m MVector PrimState m a
+ RIO.Vector.Unboxed.Unsafe: unsafeUpd :: Unbox a => Vector a -> [(Int, a)] -> Vector a
+ RIO.Vector.Unboxed.Unsafe: unsafeUpdate :: Unbox a => Vector a -> Vector (Int, a) -> Vector a
+ RIO.Vector.Unboxed.Unsafe: unsafeUpdate_ :: Unbox a => Vector a -> Vector Int -> Vector a -> Vector a
+ RIO.Vector.Unsafe: basicLength :: Vector v a => v a -> Int
+ RIO.Vector.Unsafe: basicUnsafeCopy :: (Vector v a, PrimMonad m) => Mutable v PrimState m a -> v a -> m ()
+ RIO.Vector.Unsafe: basicUnsafeFreeze :: (Vector v a, PrimMonad m) => Mutable v PrimState m a -> m v a
+ RIO.Vector.Unsafe: basicUnsafeIndexM :: (Vector v a, Monad m) => v a -> Int -> m a
+ RIO.Vector.Unsafe: basicUnsafeSlice :: Vector v a => Int -> Int -> v a -> v a
+ RIO.Vector.Unsafe: basicUnsafeThaw :: (Vector v a, PrimMonad m) => v a -> m Mutable v PrimState m a
+ RIO.Vector.Unsafe: class MVector Mutable v a => Vector (v :: * -> *) a
+ RIO.Vector.Unsafe: elemseq :: Vector v a => v a -> a -> b -> b
+ RIO.Vector.Unsafe: unsafeAccum :: Vector v a => (a -> b -> a) -> v a -> [(Int, b)] -> v a
+ RIO.Vector.Unsafe: unsafeAccumulate :: (Vector v a, Vector v (Int, b)) => (a -> b -> a) -> v a -> v (Int, b) -> v a
+ RIO.Vector.Unsafe: unsafeAccumulate_ :: (Vector v a, Vector v Int, Vector v b) => (a -> b -> a) -> v a -> v Int -> v b -> v a
+ RIO.Vector.Unsafe: unsafeBackpermute :: (Vector v a, Vector v Int) => v a -> v Int -> v a
+ RIO.Vector.Unsafe: unsafeCopy :: (PrimMonad m, Vector v a) => Mutable v PrimState m a -> v a -> m ()
+ RIO.Vector.Unsafe: unsafeDrop :: Vector v a => Int -> v a -> v a
+ RIO.Vector.Unsafe: unsafeFreeze :: (PrimMonad m, Vector v a) => Mutable v PrimState m a -> m v a
+ RIO.Vector.Unsafe: unsafeHead :: Vector v a => v a -> a
+ RIO.Vector.Unsafe: unsafeHeadM :: (Vector v a, Monad m) => v a -> m a
+ RIO.Vector.Unsafe: unsafeIndex :: Vector v a => v a -> Int -> a
+ RIO.Vector.Unsafe: unsafeIndexM :: (Vector v a, Monad m) => v a -> Int -> m a
+ RIO.Vector.Unsafe: unsafeInit :: Vector v a => v a -> v a
+ RIO.Vector.Unsafe: unsafeLast :: Vector v a => v a -> a
+ RIO.Vector.Unsafe: unsafeLastM :: (Vector v a, Monad m) => v a -> m a
+ RIO.Vector.Unsafe: unsafeSlice :: Vector v a => Int -> Int -> v a -> v a
+ RIO.Vector.Unsafe: unsafeTail :: Vector v a => v a -> v a
+ RIO.Vector.Unsafe: unsafeTake :: Vector v a => Int -> v a -> v a
+ RIO.Vector.Unsafe: unsafeThaw :: (PrimMonad m, Vector v a) => v a -> m Mutable v PrimState m a
+ RIO.Vector.Unsafe: unsafeUpd :: Vector v a => v a -> [(Int, a)] -> v a
+ RIO.Vector.Unsafe: unsafeUpdate :: (Vector v a, Vector v (Int, a)) => v a -> v (Int, a) -> v a
+ RIO.Vector.Unsafe: unsafeUpdate_ :: (Vector v a, Vector v Int) => v a -> v Int -> v a -> v a
Files
- ChangeLog.md +6/−0
- README.md +24/−0
- rio.cabal +67/−47
- src/RIO.hs +2/−0
- src/RIO/ByteString/Lazy.hs +206/−3
- src/RIO/ByteString/Lazy/Partial.hs +21/−0
- src/RIO/ByteString/Partial.hs +22/−0
- src/RIO/Char.hs +47/−2
- src/RIO/Char/Partial.hs +11/−0
- src/RIO/Directory.hs +4/−2
- src/RIO/FilePath.hs +8/−1
- src/RIO/HashMap.hs +60/−2
- src/RIO/HashMap/Partial.hs +7/−0
- src/RIO/HashSet.hs +43/−3
- src/RIO/List.hs +199/−2
- src/RIO/List/Partial.hs +29/−0
- src/RIO/Map.hs +174/−3
- src/RIO/Map/Partial.hs +18/−0
- src/RIO/Map/Unchecked.hs +30/−0
- src/RIO/Prelude/Display.hs +114/−16
- src/RIO/Prelude/Extra.hs +17/−0
- src/RIO/Prelude/IO.hs +12/−11
- src/RIO/Prelude/Logger.hs +54/−32
- src/RIO/Prelude/RIO.hs +5/−0
- src/RIO/Prelude/Reexports.hs +14/−12
- src/RIO/Prelude/Text.hs +1/−6
- src/RIO/Prelude/Trace.hs +186/−0
- src/RIO/Process.hs +4/−5
- src/RIO/Seq.hs +135/−0
- src/RIO/Set.hs +89/−3
- src/RIO/Set/Partial.hs +15/−0
- src/RIO/Set/Unchecked.hs +23/−0
- src/RIO/Text.hs +153/−11
- src/RIO/Text/Lazy.hs +135/−4
- src/RIO/Text/Lazy/Partial.hs +36/−0
- src/RIO/Text/Partial.hs +39/−0
- src/RIO/Time.hs +24/−1
- src/RIO/Vector.hs +249/−2
- src/RIO/Vector/Boxed.hs +215/−3
- src/RIO/Vector/Boxed/Partial.hs +61/−0
- src/RIO/Vector/Boxed/Unsafe.hs +42/−0
- src/RIO/Vector/Partial.hs +61/−0
- src/RIO/Vector/Storable.hs +181/−3
- src/RIO/Vector/Storable/Partial.hs +59/−0
- src/RIO/Vector/Storable/Unsafe.hs +54/−0
- src/RIO/Vector/Unboxed.hs +204/−3
- src/RIO/Vector/Unboxed/Partial.hs +61/−0
- src/RIO/Vector/Unboxed/Unsafe.hs +42/−0
- src/RIO/Vector/Unsafe.hs +45/−0
- test/RIO/Prelude/IOSpec.hs +26/−0
- test/RIO/PreludeSpec.hs +29/−10
ChangeLog.md view
@@ -1,3 +1,9 @@+# Changelog for rio++## 0.1.0.0++* Initial stable release+ ## 0.0 __NOTE__ All releases beginning with 0.0 are considered
README.md view
@@ -106,6 +106,11 @@ recommended qualified names in the modules themselves. For example, `import qualified RIO.ByteString as B`. See the module documentation for more information.+* Infix operators may be imported unqualified, with a separate import+ line if necessary. For example, `import RIO.Map ((?!), (\\))`. Do+ this only if your module contains no overlapping infix names,+ regardless of qualification. For instance, if you are importing both+ `RIO.Map.\\` and `RIO.List.\\` do not import either one unqualified. __TODO__ In the future, we may have editor integration or external tooling to help with import management. Also, see project template@@ -326,6 +331,25 @@ exceptions. * Do all resource allocations with functions like `bracket` and `finally`.++It’s a good idea to define an app-wide exception type:++```haskell+data AppExceptions+ = NetworkChangeError Text+ | FilePathError FilePath+ | ImpossibleError+ deriving (Typeable)++instance Exception AppExceptions++instance Show AppExceptions where+ show =+ \case+ NetworkChangeError err -> "network error: " <> (unpack err)+ FilePathError fp -> "error accessing filepath at: " <> fp+ ImpossibleError -> "this codepath should never have been executed. Please report a bug."+``` ### Strict data fields
rio.cabal view
@@ -1,13 +1,13 @@--- This file has been generated from package.yaml by hpack version 0.21.2.+-- This file has been generated from package.yaml by hpack version 0.28.2. -- -- see: https://github.com/sol/hpack ----- hash: 03ea77dc722a584f48bb591def1080ab6f6e2d687ff376c32027b008640c377e+-- hash: fbb7c4b9567f7b9802c00b874f404950b8358f767ddc06a21b77c66e3e4cfabd name: rio-version: 0.0.3.0+version: 0.1.0.0 synopsis: A standard library for Haskell-description: Work in progress library, see README at <https://github.com/commercialhaskell/rio#readme>+description: See README and Haddocks at <https://www.stackage.org/package/rio> category: Control homepage: https://github.com/commercialhaskell/rio#readme bug-reports: https://github.com/commercialhaskell/rio/issues@@ -17,7 +17,6 @@ license-file: LICENSE build-type: Simple cabal-version: >= 1.10- extra-source-files: ChangeLog.md README.md@@ -27,6 +26,58 @@ location: https://github.com/commercialhaskell/rio library+ exposed-modules:+ RIO+ RIO.ByteString+ RIO.ByteString.Lazy+ RIO.ByteString.Lazy.Partial+ RIO.ByteString.Partial+ RIO.Char+ RIO.Char.Partial+ RIO.Directory+ RIO.FilePath+ RIO.HashMap+ RIO.HashMap.Partial+ RIO.HashSet+ RIO.List+ RIO.List.Partial+ RIO.Map+ RIO.Map.Partial+ RIO.Map.Unchecked+ RIO.Process+ RIO.Seq+ RIO.Set+ RIO.Set.Partial+ RIO.Set.Unchecked+ RIO.Text+ RIO.Text.Lazy+ RIO.Text.Lazy.Partial+ RIO.Text.Partial+ RIO.Time+ RIO.Vector+ RIO.Vector.Boxed+ RIO.Vector.Boxed.Partial+ RIO.Vector.Boxed.Unsafe+ RIO.Vector.Partial+ RIO.Vector.Storable+ RIO.Vector.Storable.Partial+ RIO.Vector.Storable.Unsafe+ RIO.Vector.Unboxed+ RIO.Vector.Unboxed.Partial+ RIO.Vector.Unboxed.Unsafe+ RIO.Vector.Unsafe+ other-modules:+ RIO.Prelude.Display+ RIO.Prelude.Extra+ RIO.Prelude.IO+ RIO.Prelude.Lens+ RIO.Prelude.Logger+ RIO.Prelude.Reexports+ RIO.Prelude.Renames+ RIO.Prelude.RIO+ RIO.Prelude.Text+ RIO.Prelude.Trace+ RIO.Prelude.URef hs-source-dirs: src/ build-depends:@@ -44,8 +95,8 @@ , process , text , time- , typed-process >=0.2.1.0- , unliftio >=0.2.4.0+ , typed-process >=0.2.2.0+ , unliftio >=0.2.6.0 , unordered-containers , vector if os(windows)@@ -55,43 +106,18 @@ else build-depends: unix- exposed-modules:- RIO- RIO.ByteString- RIO.ByteString.Lazy- RIO.Char- RIO.Directory- RIO.FilePath- RIO.HashMap- RIO.HashSet- RIO.List- RIO.Map- RIO.Prelude.Display- RIO.Prelude.Extra- RIO.Prelude.IO- RIO.Prelude.Lens- RIO.Prelude.Logger- RIO.Prelude.Reexports- RIO.Prelude.Renames- RIO.Prelude.RIO- RIO.Prelude.Text- RIO.Prelude.URef- RIO.Process- RIO.Set- RIO.Text- RIO.Text.Lazy- RIO.Time- RIO.Vector- RIO.Vector.Boxed- RIO.Vector.Storable- RIO.Vector.Unboxed- other-modules:- Paths_rio default-language: Haskell2010 test-suite spec type: exitcode-stdio-1.0 main-is: Spec.hs+ other-modules:+ RIO.ListSpec+ RIO.LoggerSpec+ RIO.Prelude.IOSpec+ RIO.PreludeSpec+ RIO.TextSpec+ Paths_rio hs-source-dirs: test build-depends:@@ -111,8 +137,8 @@ , rio , text , time- , typed-process >=0.2.1.0- , unliftio >=0.2.4.0+ , typed-process >=0.2.2.0+ , unliftio >=0.2.6.0 , unordered-containers , vector if os(windows)@@ -122,10 +148,4 @@ else build-depends: unix- other-modules:- RIO.ListSpec- RIO.LoggerSpec- RIO.PreludeSpec- RIO.TextSpec- Paths_rio default-language: Haskell2010
src/RIO.hs view
@@ -8,6 +8,7 @@ , module RIO.Prelude.Reexports , module RIO.Prelude.Renames , module RIO.Prelude.Text+ , module RIO.Prelude.Trace , module RIO.Prelude.URef ) where @@ -20,4 +21,5 @@ import RIO.Prelude.Reexports import RIO.Prelude.Renames import RIO.Prelude.Text+import RIO.Prelude.Trace import RIO.Prelude.URef
src/RIO/ByteString/Lazy.hs view
@@ -1,8 +1,211 @@ -- | Lazy @ByteString@. Import as: ----- > import qualified RIO.ByteString.Lazy as B.Lazy+-- > import qualified RIO.ByteString.Lazy as BL+{-# LANGUAGE NoImplicitPrelude #-} module RIO.ByteString.Lazy- ( module Data.ByteString.Lazy+ (+ -- * The @ByteString@ type+ Data.ByteString.Lazy.ByteString++ -- * Introducing and eliminating 'ByteString's+ , Data.ByteString.Lazy.empty+ , Data.ByteString.Lazy.singleton+ , Data.ByteString.Lazy.pack+ , Data.ByteString.Lazy.unpack+ , Data.ByteString.Lazy.fromStrict+ , Data.ByteString.Lazy.toStrict+ , Data.ByteString.Lazy.fromChunks+ , Data.ByteString.Lazy.toChunks+ , Data.ByteString.Lazy.foldrChunks+ , Data.ByteString.Lazy.foldlChunks++ -- * Basic interface+ , Data.ByteString.Lazy.cons+ , Data.ByteString.Lazy.cons'+ , Data.ByteString.Lazy.snoc+ , Data.ByteString.Lazy.append+ , Data.ByteString.Lazy.uncons+ , Data.ByteString.Lazy.unsnoc+ , Data.ByteString.Lazy.null+ , Data.ByteString.Lazy.length++ -- * Transforming ByteStrings+ , Data.ByteString.Lazy.map+ , Data.ByteString.Lazy.reverse+ , Data.ByteString.Lazy.intersperse+ , Data.ByteString.Lazy.intercalate+ , Data.ByteString.Lazy.transpose++ -- * Reducing 'ByteString's (folds)+ , Data.ByteString.Lazy.foldl+ , Data.ByteString.Lazy.foldl'+ , Data.ByteString.Lazy.foldr++ -- ** Special folds+ , Data.ByteString.Lazy.concat+ , Data.ByteString.Lazy.concatMap+ , Data.ByteString.Lazy.any+ , Data.ByteString.Lazy.all++ -- * Building ByteStrings+ -- ** Scans+ , Data.ByteString.Lazy.scanl++ -- ** Accumulating maps+ , Data.ByteString.Lazy.mapAccumL+ , Data.ByteString.Lazy.mapAccumR++ -- ** Infinite ByteStrings+ , Data.ByteString.Lazy.repeat+ , Data.ByteString.Lazy.replicate+ , Data.ByteString.Lazy.cycle+ , Data.ByteString.Lazy.iterate++ -- ** Unfolding ByteStrings+ , Data.ByteString.Lazy.unfoldr++ -- * Substrings+ -- ** Breaking strings+ , Data.ByteString.Lazy.take+ , Data.ByteString.Lazy.drop+ , Data.ByteString.Lazy.splitAt+ , Data.ByteString.Lazy.takeWhile+ , Data.ByteString.Lazy.dropWhile+ , Data.ByteString.Lazy.span+ , Data.ByteString.Lazy.break+ , Data.ByteString.Lazy.group+ , Data.ByteString.Lazy.groupBy+ , Data.ByteString.Lazy.inits+ , Data.ByteString.Lazy.tails+ , Data.ByteString.Lazy.stripPrefix+ , Data.ByteString.Lazy.stripSuffix++ -- ** Breaking into many substrings+ , Data.ByteString.Lazy.split+ , Data.ByteString.Lazy.splitWith++ -- * Predicates+ , Data.ByteString.Lazy.isPrefixOf+ , Data.ByteString.Lazy.isSuffixOf++ -- * Search ByteStrings+ -- ** Searching by equality+ , Data.ByteString.Lazy.elem+ , Data.ByteString.Lazy.notElem++ -- ** Searching with a predicate+ , Data.ByteString.Lazy.find+ , Data.ByteString.Lazy.filter+ , Data.ByteString.Lazy.partition++ -- * Indexing ByteStrings+ , Data.ByteString.Lazy.index+ , Data.ByteString.Lazy.elemIndex+ , Data.ByteString.Lazy.elemIndexEnd+ , Data.ByteString.Lazy.elemIndices+ , Data.ByteString.Lazy.findIndex+ , Data.ByteString.Lazy.findIndices+ , Data.ByteString.Lazy.count++ -- * Zipping and unzipping ByteStrings+ , Data.ByteString.Lazy.zip+ , Data.ByteString.Lazy.zipWith+ , Data.ByteString.Lazy.unzip++ -- * Low level conversions+ -- ** Copying ByteStrings+ , Data.ByteString.Lazy.copy++ -- * I\/O with 'ByteString's+ -- ** Standard input and output+ , getContents+ , putStr+ , putStrLn+ , interact++ -- ** Files+ , readFile+ , writeFile+ , appendFile++ -- ** I\/O with Handles+ , hGetContents+ , hGet+ , hGetNonBlocking+ , hPut+ , hPutNonBlocking+ , hPutStr ) where -import Data.ByteString.Lazy+import Data.ByteString.Lazy hiding+ (+ getContents+ , putStr+ , putStrLn+ , interact+ , readFile+ , writeFile+ , appendFile+ , hGetContents+ , hGet+ , hGetNonBlocking+ , hPut+ , hPutNonBlocking+ , hPutStr+ )+import qualified Data.ByteString.Lazy+import qualified Data.ByteString.Lazy.Char8+import RIO++-- | Lifted 'Data.ByteString.Lazy.getContents'+getContents :: MonadIO m => m LByteString+getContents = liftIO Data.ByteString.Lazy.getContents++-- | Lifted 'Data.ByteString.Lazy.putStr'+putStr :: MonadIO m => LByteString -> m ()+putStr = liftIO . Data.ByteString.Lazy.putStr++-- | Lifted 'Data.ByteString.Lazy.putStrLn'+putStrLn :: MonadIO m => LByteString -> m ()+putStrLn = liftIO . Data.ByteString.Lazy.Char8.putStrLn++-- | Lifted 'Data.ByteString.Lazy.interact'+interact :: MonadIO m => (LByteString -> LByteString) -> m ()+interact = liftIO . Data.ByteString.Lazy.interact++-- | Lifted 'Data.ByteString.Lazy.readFile'+readFile :: MonadIO m => FilePath -> m LByteString+readFile = liftIO . Data.ByteString.Lazy.readFile++-- | Lifted 'Data.ByteString.Lazy.writeFile'+writeFile :: MonadIO m => FilePath -> LByteString -> m ()+writeFile fp contents =+ liftIO $ Data.ByteString.Lazy.writeFile fp contents++-- | Lifted 'Data.ByteString.Lazy.appendFile'+appendFile :: MonadIO m => FilePath -> LByteString -> m ()+appendFile fp = liftIO . Data.ByteString.Lazy.appendFile fp++-- | Lifted 'Data.ByteString.Lazy.hGet'+hGet :: MonadIO m => Handle -> Int -> m LByteString+hGet handle' count' = liftIO $ Data.ByteString.Lazy.hGet handle' count'++-- | Lifted 'Data.ByteString.Lazy.hGetContents'+hGetContents :: MonadIO m => Handle -> m LByteString+hGetContents = liftIO . Data.ByteString.Lazy.hGetContents++-- | Lifted 'Data.ByteString.Lazy.hGetNonBlocking'+hGetNonBlocking :: MonadIO m => Handle -> Int -> m LByteString+hGetNonBlocking h = liftIO . Data.ByteString.Lazy.hGetNonBlocking h++-- | Lifted 'Data.ByteString.Lazy.hPut'+hPut :: MonadIO m => Handle -> LByteString -> m ()+hPut h = liftIO . Data.ByteString.Lazy.hPut h++-- | Lifted 'Data.ByteString.Lazy.hPutNonBlocking'+hPutNonBlocking :: MonadIO m => Handle -> LByteString -> m LByteString+hPutNonBlocking h = liftIO . Data.ByteString.Lazy.hPutNonBlocking h++-- | Lifted 'Data.ByteString.Lazy.hPutStr'+hPutStr :: MonadIO m => Handle -> LByteString -> m ()+hPutStr h = liftIO . Data.ByteString.Lazy.hPutStr h
+ src/RIO/ByteString/Lazy/Partial.hs view
@@ -0,0 +1,21 @@+-- | This module exports all the partial functions from "Data.ByteString.Lazy"++module RIO.ByteString.Lazy.Partial+ (+ -- * Basic interface+ Data.ByteString.Lazy.head+ , Data.ByteString.Lazy.last+ , Data.ByteString.Lazy.tail+ , Data.ByteString.Lazy.init++ -- * Reducing 'ByteString's (folds)+ , Data.ByteString.Lazy.foldl1+ , Data.ByteString.Lazy.foldl1'+ , Data.ByteString.Lazy.foldr1++ -- ** Special folds+ , Data.ByteString.Lazy.maximum+ , Data.ByteString.Lazy.minimum+ ) where++import qualified Data.ByteString.Lazy
+ src/RIO/ByteString/Partial.hs view
@@ -0,0 +1,22 @@+-- | This module exports all the partial functions from 'Data.ByteString'++module RIO.ByteString.Partial+ (+ -- * Basic interface+ Data.ByteString.head+ , Data.ByteString.last+ , Data.ByteString.tail+ , Data.ByteString.init++ -- * Reducing 'ByteString's (folds)+ , Data.ByteString.foldl1+ , Data.ByteString.foldl1'+ , Data.ByteString.foldr1+ , Data.ByteString.foldr1'++ -- * Special folds+ , Data.ByteString.maximum+ , Data.ByteString.minimum+ ) where++import qualified Data.ByteString
src/RIO/Char.hs view
@@ -2,7 +2,52 @@ -- -- > import qualified RIO.Char as C module RIO.Char- ( module Data.Char+ (+ Data.Char.Char++ -- * Character classification+ -- | Unicode characters are divided into letters, Data.Char.numbers, marks,+ -- punctuation, Data.Char.symbols, separators (including spaces) and others+ -- (including control characters).+ , Data.Char.isControl+ , Data.Char.isSpace+ , Data.Char.isLower+ , Data.Char.isUpper+ , Data.Char.isAlpha+ , Data.Char.isAlphaNum+ , Data.Char.isPrint+ , Data.Char.isDigit+ , Data.Char.isOctDigit+ , Data.Char.isHexDigit+ , Data.Char.isLetter+ , Data.Char.isMark+ , Data.Char.isNumber+ , Data.Char.isPunctuation+ , Data.Char.isSymbol+ , Data.Char.isSeparator++ -- ** Subranges+ , Data.Char.isAscii+ , Data.Char.isLatin1+ , Data.Char.isAsciiUpper+ , Data.Char.isAsciiLower++ -- ** Unicode general categories+ , Data.Char.GeneralCategory(..)+ , Data.Char.generalCategory++ -- * Case conversion+ , Data.Char.toUpper+ , Data.Char.toLower+ , Data.Char.toTitle++ -- * Numeric representations+ , Data.Char.ord++ -- * String representations+ , Data.Char.showLitChar+ , Data.Char.lexLitChar+ , Data.Char.readLitChar ) where -import Data.Char+import qualified Data.Char
+ src/RIO/Char/Partial.hs view
@@ -0,0 +1,11 @@+module RIO.Char.Partial+ (+ -- * Single digit characters+ Data.Char.digitToInt+ , Data.Char.intToDigit++ -- * Numeric representations+ , Data.Char.chr+ ) where++import qualified Data.Char
src/RIO/Directory.hs view
@@ -1,5 +1,7 @@+{-# LANGUAGE CPP #-}+{-# LANGUAGE NoImplicitPrelude #-} module RIO.Directory- ( module System.Directory+ ( module UnliftIO.Directory ) where -import System.Directory+import UnliftIO.Directory
src/RIO/FilePath.hs view
@@ -1,5 +1,12 @@ module RIO.FilePath ( module System.FilePath+ , getSearchPath ) where -import System.FilePath+import Control.Monad.IO.Class+import System.FilePath hiding(getSearchPath)+import qualified System.FilePath++-- | Lifted version of 'System.FilePath.getSearchPath'+getSearchPath :: MonadIO m => m [FilePath]+getSearchPath = liftIO System.FilePath.getSearchPath
src/RIO/HashMap.hs view
@@ -1,8 +1,66 @@ -- | Strict @Map@ with hashed keys. Import as: ----- > import qualified RIO.HashMap as M.Hash+-- > import qualified RIO.HashMap as HM module RIO.HashMap- ( module Data.HashMap.Strict+ (+ Data.HashMap.Strict.HashMap++ -- * Construction+ , Data.HashMap.Strict.empty+ , Data.HashMap.Strict.singleton++ -- * Basic interface+ , Data.HashMap.Strict.null+ , Data.HashMap.Strict.size+ , Data.HashMap.Strict.member+ , Data.HashMap.Strict.lookup+ , Data.HashMap.Strict.lookupDefault+ , Data.HashMap.Strict.insert+ , Data.HashMap.Strict.insertWith+ , Data.HashMap.Strict.delete+ , Data.HashMap.Strict.adjust+ , Data.HashMap.Strict.update+ , Data.HashMap.Strict.alter++ -- * Combine+ -- ** Union+ , Data.HashMap.Strict.union+ , Data.HashMap.Strict.unionWith+ , Data.HashMap.Strict.unionWithKey+ , Data.HashMap.Strict.unions++ -- * Transformations+ , Data.HashMap.Strict.map+ , Data.HashMap.Strict.mapWithKey+ , Data.HashMap.Strict.traverseWithKey++ -- * Difference and intersection+ , Data.HashMap.Strict.difference+ , Data.HashMap.Strict.differenceWith+ , Data.HashMap.Strict.intersection+ , Data.HashMap.Strict.intersectionWith+ , Data.HashMap.Strict.intersectionWithKey++ -- * Folds+ , Data.HashMap.Strict.foldl'+ , Data.HashMap.Strict.foldlWithKey'+ , Data.HashMap.Strict.foldr+ , Data.HashMap.Strict.foldrWithKey++ -- * Filter+ , Data.HashMap.Strict.filter+ , Data.HashMap.Strict.filterWithKey+ , Data.HashMap.Strict.mapMaybe+ , Data.HashMap.Strict.mapMaybeWithKey++ -- * Conversions+ , Data.HashMap.Strict.keys+ , Data.HashMap.Strict.elems++ -- ** Lists+ , Data.HashMap.Strict.toList+ , Data.HashMap.Strict.fromList+ , Data.HashMap.Strict.fromListWith ) where import Data.HashMap.Strict
+ src/RIO/HashMap/Partial.hs view
@@ -0,0 +1,7 @@+module RIO.HashMap.Partial+ (+ -- * Basic interface+ (Data.HashMap.Strict.!)+ ) where++import qualified Data.HashMap.Strict
src/RIO/HashSet.hs view
@@ -1,8 +1,48 @@ -- | @Set@ with hashed members. Import as: ----- > import qualified RIO.HashSet as S.Hash+-- > import qualified RIO.HashSet as HS module RIO.HashSet- ( module Data.HashSet+ (+ Data.HashSet.HashSet++ -- * Construction+ , Data.HashSet.empty+ , Data.HashSet.singleton++ -- * Combine+ , Data.HashSet.union+ , Data.HashSet.unions++ -- * Basic interface+ , Data.HashSet.null+ , Data.HashSet.size+ , Data.HashSet.member+ , Data.HashSet.insert+ , Data.HashSet.delete++ -- * Transformations+ , Data.HashSet.map++ -- * Difference and intersection+ , Data.HashSet.difference+ , Data.HashSet.intersection++ -- * Folds+ , Data.HashSet.foldl'+ , Data.HashSet.foldr++ -- * Filter+ , Data.HashSet.filter++ -- * Conversions++ -- ** Lists+ , Data.HashSet.toList+ , Data.HashSet.fromList++ -- * HashMaps+ , Data.HashSet.toMap+ , Data.HashSet.fromMap ) where -import Data.HashSet+import qualified Data.HashSet
src/RIO/List.hs view
@@ -2,13 +2,201 @@ -- -- > import qualified RIO.List as L module RIO.List- ( module Data.List+ (+ -- * Basic functions+ (Data.List.++)+ , Data.List.uncons+ , Data.List.null+ , Data.List.length++ -- * List transformations+ , Data.List.map+ , Data.List.reverse++ , Data.List.intersperse+ , Data.List.intercalate+ , Data.List.transpose++ , Data.List.subsequences+ , Data.List.permutations++ -- * Reducing lists (folds)++ , Data.List.foldl+ , Data.List.foldl'+ , Data.List.foldr++ -- ** Special folds++ , Data.List.concat+ , Data.List.concatMap+ , Data.List.and+ , Data.List.or+ , Data.List.any+ , Data.List.all+ , Data.List.sum+ , Data.List.product++ -- * Building lists++ -- ** Scans+ , Data.List.scanl+ , Data.List.scanl'+ , Data.List.scanr++ -- ** Accumulating maps+ , Data.List.mapAccumL+ , Data.List.mapAccumR++ -- ** Infinite lists+ , Data.List.iterate+ , Data.List.repeat+ , Data.List.replicate+ , Data.List.cycle++ -- ** Unfolding+ , Data.List.unfoldr++ -- * Sublists++ -- ** Extracting sublists+ , Data.List.take+ , Data.List.drop+ , Data.List.splitAt++ , Data.List.takeWhile+ , Data.List.dropWhile+ , Data.List.dropWhileEnd+ , Data.List.span+ , Data.List.break++ , Data.List.stripPrefix , stripSuffix , dropPrefix , dropSuffix++ , Data.List.group++ , Data.List.inits+ , Data.List.tails++ -- ** Predicates+ , Data.List.isPrefixOf+ , Data.List.isSuffixOf+ , Data.List.isInfixOf+ , Data.List.isSubsequenceOf++ -- * Searching lists++ -- ** Searching by equality+ , Data.List.elem+ , Data.List.notElem+ , Data.List.lookup++ -- ** Searching with a predicate+ , Data.List.find+ , Data.List.filter+ , Data.List.partition++ -- * Indexing lists+ -- | These functions treat a list @xs@ as a indexed collection,+ -- with indices ranging from 0 to @'length' xs - 1@.++ , Data.List.elemIndex+ , Data.List.elemIndices++ , Data.List.findIndex+ , Data.List.findIndices++ -- * Zipping and unzipping lists++ , Data.List.zip+ , Data.List.zip3+ , Data.List.zip4+ , Data.List.zip5+ , Data.List.zip6+ , Data.List.zip7++ , Data.List.zipWith+ , Data.List.zipWith3+ , Data.List.zipWith4+ , Data.List.zipWith5+ , Data.List.zipWith6+ , Data.List.zipWith7++ , Data.List.unzip+ , Data.List.unzip3+ , Data.List.unzip4+ , Data.List.unzip5+ , Data.List.unzip6+ , Data.List.unzip7++ -- * Special lists++ -- ** Functions on strings+ , Data.List.lines+ , linesCR+ , Data.List.words+ , Data.List.unlines+ , Data.List.unwords++ -- ** \"Set\" operations++ , Data.List.nub++ , Data.List.delete+ , (Data.List.\\)++ , Data.List.union+ , Data.List.intersect++ -- ** Ordered lists+ , Data.List.sort+ , Data.List.sortOn+ , Data.List.insert++ -- * Generalized functions++ -- ** The \"@By@\" operations+ -- | By convention, overloaded functions have a non-overloaded+ -- counterpart whose name is suffixed with \`@By@\'.+ --+ -- It is often convenient to use these functions together with+ -- 'Data.Function.on', for instance @'sortBy' ('compare'+ -- \`on\` 'fst')@.++ -- *** User-supplied equality (replacing an @Eq@ context)+ -- | The predicate is assumed to define an equivalence.+ , Data.List.nubBy+ , Data.List.deleteBy+ , Data.List.deleteFirstsBy+ , Data.List.unionBy+ , Data.List.intersectBy+ , Data.List.groupBy++ -- *** User-supplied comparison (replacing an @Ord@ context)+ -- | The function is assumed to define a total ordering.+ , Data.List.sortBy+ , Data.List.insertBy+ , Data.List.maximumBy+ , Data.List.minimumBy++ -- ** The \"@generic@\" operations+ -- | The prefix \`@generic@\' indicates an overloaded function that+ -- is a generalized version of a "Prelude" function.++ , Data.List.genericLength+ , Data.List.genericTake+ , Data.List.genericDrop+ , Data.List.genericSplitAt+ , Data.List.genericIndex+ , Data.List.genericReplicate+ ) where -import Data.List+import qualified Data.List++import Data.List(stripPrefix) import Data.Maybe (fromMaybe) -- | Remove the suffix from the given list, if present@@ -38,3 +226,12 @@ -> [a] -> [a] dropSuffix suffix t = fromMaybe t (stripSuffix suffix t)++-- | 'linesCR' breaks a 'String' up into a list of `String`s at newline+-- 'Char's. It is very similar to 'lines', but it also removes any+-- trailing @'\r'@ 'Char's. The resulting 'String' values do not contain+-- newlines or trailing @'\r'@ characters.+--+-- @since 0.1.0.0+linesCR :: String -> [String]+linesCR = map (dropSuffix "\r") . lines
+ src/RIO/List/Partial.hs view
@@ -0,0 +1,29 @@+module RIO.List.Partial+ (+ -- * Basic functions+ Data.List.head+ , Data.List.last+ , Data.List.tail+ , Data.List.init++ -- * Reducing lists (folds)+ , Data.List.foldl1+ , Data.List.foldl1'+ , Data.List.foldr1++ -- ** Special folds+ , Data.List.maximum+ , Data.List.minimum++ -- * Building lists++ -- ** Scans+ , Data.List.scanl1+ , Data.List.scanr1++ -- * Indexing lists+ , (Data.List.!!)+ ) where++import qualified Data.List+
src/RIO/Map.hs view
@@ -1,8 +1,179 @@+{-# LANGUAGE CPP #-} -- | Strict @Map@. Import as: ----- > import qualified RIO.Map as M+-- > import qualified RIO.Map as Map module RIO.Map- ( module Data.Map.Strict+ (+ -- * Map type+ Data.Map.Strict.Map++ -- * Operators+#if MIN_VERSION_containers(0,5,9)+ , (Data.Map.Strict.!?)+#endif+ , (Data.Map.Strict.\\)++ -- * Query+ , Data.Map.Strict.null+ , Data.Map.Strict.size+ , Data.Map.Strict.member+ , Data.Map.Strict.notMember+ , Data.Map.Strict.lookup+ , Data.Map.Strict.findWithDefault+ , Data.Map.Strict.lookupLT+ , Data.Map.Strict.lookupGT+ , Data.Map.Strict.lookupLE+ , Data.Map.Strict.lookupGE++ -- * Construction+ , Data.Map.Strict.empty+ , Data.Map.Strict.singleton++ -- ** Insertion+ , Data.Map.Strict.insert+ , Data.Map.Strict.insertWith+ , Data.Map.Strict.insertWithKey+ , Data.Map.Strict.insertLookupWithKey++ -- ** Delete\/Update+ , Data.Map.Strict.delete+ , Data.Map.Strict.adjust+ , Data.Map.Strict.adjustWithKey+ , Data.Map.Strict.update+ , Data.Map.Strict.updateWithKey+ , Data.Map.Strict.updateLookupWithKey+ , Data.Map.Strict.alter+#if MIN_VERSION_containers(0,5,8)+ , Data.Map.Strict.alterF+#endif++ -- * Combine++ -- ** Union+ , Data.Map.Strict.union+ , Data.Map.Strict.unionWith+ , Data.Map.Strict.unionWithKey+ , Data.Map.Strict.unions+ , Data.Map.Strict.unionsWith++ -- ** Difference+ , Data.Map.Strict.difference+ , Data.Map.Strict.differenceWith+ , Data.Map.Strict.differenceWithKey++ -- ** Intersection+ , Data.Map.Strict.intersection+ , Data.Map.Strict.intersectionWith+ , Data.Map.Strict.intersectionWithKey++ -- ** General combining functions+ -- | See "Data.Map.Merge.Strict"++ -- ** Deprecated general combining function++ , Data.Map.Strict.mergeWithKey++ -- * Traversal+ -- ** Map+ , Data.Map.Strict.map+ , Data.Map.Strict.mapWithKey+ , Data.Map.Strict.traverseWithKey+#if MIN_VERSION_containers(0,5,8)+ , Data.Map.Strict.traverseMaybeWithKey+#endif+ , Data.Map.Strict.mapAccum+ , Data.Map.Strict.mapAccumWithKey+ , Data.Map.Strict.mapAccumRWithKey+ , Data.Map.Strict.mapKeys+ , Data.Map.Strict.mapKeysWith++ -- * Folds+ , Data.Map.Strict.foldr+ , Data.Map.Strict.foldl+ , Data.Map.Strict.foldrWithKey+ , Data.Map.Strict.foldlWithKey+ , Data.Map.Strict.foldMapWithKey++ -- ** Strict folds+ , Data.Map.Strict.foldr'+ , Data.Map.Strict.foldl'+ , Data.Map.Strict.foldrWithKey'+ , Data.Map.Strict.foldlWithKey'++ -- * Conversion+ , Data.Map.Strict.elems+ , Data.Map.Strict.keys+ , Data.Map.Strict.assocs+ , Data.Map.Strict.keysSet+ , Data.Map.Strict.fromSet++ -- ** Lists+ , Data.Map.Strict.toList+ , Data.Map.Strict.fromList+ , Data.Map.Strict.fromListWith+ , Data.Map.Strict.fromListWithKey++ -- * Filter+ , Data.Map.Strict.filter+ , Data.Map.Strict.filterWithKey+#if MIN_VERSION_containers(0,5,8)+ , Data.Map.Strict.restrictKeys+ , Data.Map.Strict.withoutKeys+#endif+ , Data.Map.Strict.partition+ , Data.Map.Strict.partitionWithKey++#if MIN_VERSION_containers(0,5,8)+ , Data.Map.Strict.takeWhileAntitone+ , Data.Map.Strict.dropWhileAntitone+ , Data.Map.Strict.spanAntitone+#endif++ , Data.Map.Strict.mapMaybe+ , Data.Map.Strict.mapMaybeWithKey+ , Data.Map.Strict.mapEither+ , Data.Map.Strict.mapEitherWithKey++ , Data.Map.Strict.split+ , Data.Map.Strict.splitLookup+ , Data.Map.Strict.splitRoot++ -- * Submap+ , Data.Map.Strict.isSubmapOf+ , Data.Map.Strict.isSubmapOfBy+ , Data.Map.Strict.isProperSubmapOf+ , Data.Map.Strict.isProperSubmapOfBy++ -- * Indexed+ , Data.Map.Strict.lookupIndex+ , Data.Map.Strict.elemAt+ , Data.Map.Strict.deleteAt+#if MIN_VERSION_containers(0,5,8)+ , Data.Map.Strict.take+ , Data.Map.Strict.drop+ , Data.Map.Strict.splitAt+#endif++ -- * Min\/Max+#if MIN_VERSION_containers(0,5,9)+ , Data.Map.Strict.lookupMin+ , Data.Map.Strict.lookupMax+#endif+ , Data.Map.Strict.deleteMin+ , Data.Map.Strict.deleteMax+ , Data.Map.Strict.updateMin+ , Data.Map.Strict.updateMax+ , Data.Map.Strict.updateMinWithKey+ , Data.Map.Strict.updateMaxWithKey+ , Data.Map.Strict.minView+ , Data.Map.Strict.maxView+ , Data.Map.Strict.minViewWithKey+ , Data.Map.Strict.maxViewWithKey++ -- * Debugging+ , Data.Map.Strict.showTree+ , Data.Map.Strict.showTreeWith+ , Data.Map.Strict.valid ) where -import Data.Map.Strict+import qualified Data.Map.Strict
+ src/RIO/Map/Partial.hs view
@@ -0,0 +1,18 @@+module RIO.Map.Partial+ (+ -- * Operators+ (Data.Map.Strict.!)+ -- * Indexed+ , Data.Map.Strict.elemAt+ , Data.Map.Strict.deleteAt+ , Data.Map.Strict.findIndex+ , Data.Map.Strict.updateAt++ -- * Min\/Max+ , Data.Map.Strict.findMin+ , Data.Map.Strict.findMax+ , Data.Map.Strict.deleteFindMin+ , Data.Map.Strict.deleteFindMax+ ) where++import qualified Data.Map.Strict
+ src/RIO/Map/Unchecked.hs view
@@ -0,0 +1,30 @@+{-# LANGUAGE CPP #-}+-- | This module contains functions from "Data.Map.strict" that have unchecked+-- preconditions on their input. If these preconditions are not satisfied,+-- the data structure may end up in an invalid state and other operations+-- may misbehave.++module RIO.Map.Unchecked+ (+ -- * Traversal+ -- ** Map+ Data.Map.Strict.mapKeysMonotonic++ -- * Conversion+ -- ** Ordered lists+ , Data.Map.Strict.toAscList+ , Data.Map.Strict.fromAscList+ , Data.Map.Strict.fromAscListWith+ , Data.Map.Strict.fromAscListWithKey+ , Data.Map.Strict.fromDistinctAscList+#if MIN_VERSION_containers(0,5,8)+ , Data.Map.Strict.toDescList+ , Data.Map.Strict.fromDescList+ , Data.Map.Strict.fromDescListWith+ , Data.Map.Strict.fromDescListWithKey+ , Data.Map.Strict.fromDistinctDescList+#endif++ ) where++import qualified Data.Map.Strict
src/RIO/Prelude/Display.hs view
@@ -1,11 +1,12 @@ {-# LANGUAGE GeneralizedNewtypeDeriving #-} module RIO.Prelude.Display- ( DisplayBuilder (..)+ ( Utf8Builder (..) , Display (..) , displayShow- , displayBuilderToText+ , utf8BuilderToText+ , utf8BuilderToLazyText , displayBytesUtf8- , writeFileDisplayBuilder+ , writeFileUtf8Builder ) where import Data.String (IsString (..))@@ -16,35 +17,132 @@ import Data.Semigroup (Semigroup) import Data.Text (Text) import qualified Data.Text.Lazy as TL+import qualified Data.Text.Lazy.Encoding as TL import UnliftIO import Data.Text.Encoding (decodeUtf8With, encodeUtf8Builder) import Data.Text.Encoding.Error (lenientDecode)+import Data.Int+import Data.Word+import System.Process.Typed (ProcessConfig, setEnvInherit) -newtype DisplayBuilder = DisplayBuilder { getUtf8Builder :: Builder }+-- | A builder of binary data, with the invariant that the underlying+-- data is supposed to be UTF-8 encoded.+--+-- @since 0.1.0.0+newtype Utf8Builder = Utf8Builder { getUtf8Builder :: Builder } deriving (Semigroup, Monoid) -instance IsString DisplayBuilder where- fromString = DisplayBuilder . BB.stringUtf8+-- | @since 0.1.0.0+instance IsString Utf8Builder where+ fromString = Utf8Builder . BB.stringUtf8 +-- | A typeclass for values which can be converted to a+-- 'Utf8Builder'. The intention of this typeclass is to provide a+-- human-friendly display of the data.+--+-- @since 0.1.0.0 class Display a where- display :: a -> DisplayBuilder+ display :: a -> Utf8Builder++-- | @since 0.1.0.0+instance Display Utf8Builder where+ display = id+-- | @since 0.1.0.0 instance Display Text where- display = DisplayBuilder . encodeUtf8Builder+ display = Utf8Builder . encodeUtf8Builder+-- | @since 0.1.0.0 instance Display TL.Text where display = foldMap display . TL.toChunks+-- | @since 0.1.0.0+instance Display Char where+ display = Utf8Builder . BB.charUtf8++-- | @since 0.1.0.0+instance Display Integer where+ display = Utf8Builder . BB.integerDec+-- | @since 0.1.0.0+instance Display Float where+ display = Utf8Builder . BB.floatDec+instance Display Double where+ display = Utf8Builder . BB.doubleDec++-- | @since 0.1.0.0 instance Display Int where- display = DisplayBuilder . BB.intDec+ display = Utf8Builder . BB.intDec+-- | @since 0.1.0.0+instance Display Int8 where+ display = Utf8Builder . BB.int8Dec+-- | @since 0.1.0.0+instance Display Int16 where+ display = Utf8Builder . BB.int16Dec+-- | @since 0.1.0.0+instance Display Int32 where+ display = Utf8Builder . BB.int32Dec+-- | @since 0.1.0.0+instance Display Int64 where+ display = Utf8Builder . BB.int64Dec -displayShow :: Show a => a -> DisplayBuilder+-- | @since 0.1.0.0+instance Display Word where+ display = Utf8Builder . BB.wordDec+-- | @since 0.1.0.0+instance Display Word8 where+ display = Utf8Builder . BB.word8Dec+-- | @since 0.1.0.0+instance Display Word16 where+ display = Utf8Builder . BB.word16Dec+-- | @since 0.1.0.0+instance Display Word32 where+ display = Utf8Builder . BB.word32Dec+-- | @since 0.1.0.0+instance Display Word64 where+ display = Utf8Builder . BB.word64Dec++-- | @since 0.1.0.0+instance Display SomeException where+ display = fromString . displayException+-- | @since 0.1.0.0+instance Display IOException where+ display = fromString . displayException++-- | @since 0.1.0.0+instance Display (ProcessConfig a b c) where+ display = displayShow . setEnvInherit++-- | Use the 'Show' instance for a value to convert it to a+-- 'Utf8Builder'.+--+-- @since 0.1.0.0+displayShow :: Show a => a -> Utf8Builder displayShow = fromString . show -displayBytesUtf8 :: ByteString -> DisplayBuilder-displayBytesUtf8 = DisplayBuilder . BB.byteString+-- | Convert a 'ByteString' into a 'Utf8Builder'.+--+-- /NOTE/ This function performs no checks to ensure that the data is,+-- in fact, UTF8 encoded. If you provide non-UTF8 data, later+-- functions may fail.+--+-- @since 0.1.0.0+displayBytesUtf8 :: ByteString -> Utf8Builder+displayBytesUtf8 = Utf8Builder . BB.byteString -displayBuilderToText :: DisplayBuilder -> Text-displayBuilderToText =+-- | Convert a 'Utf8Builder' value into a strict 'Text'.+--+-- @since 0.1.0.0+utf8BuilderToText :: Utf8Builder -> Text+utf8BuilderToText = decodeUtf8With lenientDecode . BL.toStrict . BB.toLazyByteString . getUtf8Builder -writeFileDisplayBuilder :: MonadIO m => FilePath -> DisplayBuilder -> m ()-writeFileDisplayBuilder fp (DisplayBuilder builder) =+-- | Convert a 'Utf8Builder' value into a lazy 'Text'.+--+-- @since 0.1.0.0+utf8BuilderToLazyText :: Utf8Builder -> TL.Text+utf8BuilderToLazyText =+ TL.decodeUtf8With lenientDecode . BB.toLazyByteString . getUtf8Builder++-- | Write the given 'Utf8Builder' value to a file.+--+-- @since 0.1.0.0+writeFileUtf8Builder :: MonadIO m => FilePath -> Utf8Builder -> m ()+writeFileUtf8Builder fp (Utf8Builder builder) = liftIO $ withBinaryFile fp WriteMode $ \h -> BB.hPutBuilder h builder
src/RIO/Prelude/Extra.hs view
@@ -7,16 +7,20 @@ , forMaybeA , forMaybeM , nubOrd+ , whenM+ , unlessM ) where import qualified Data.Set as Set import Data.Monoid (First (..)) import RIO.Prelude.Reexports +-- | Apply a function to a 'Left' constructor mapLeft :: (a1 -> a2) -> Either a1 b -> Either a2 b mapLeft f (Left a1) = Left (f a1) mapLeft _ (Right b) = Right b +-- | Get a 'First' value with a default fallback fromFirst :: a -> First a -> a fromFirst x = fromMaybe x . getFirst @@ -36,6 +40,7 @@ forMaybeM :: Monad m => [a] -> (a -> m (Maybe b)) -> m [b] forMaybeM = flip mapMaybeM +-- | Strip out duplicates nubOrd :: Ord a => [a] -> [a] nubOrd = loop mempty@@ -44,3 +49,15 @@ loop !s (a:as) | a `Set.member` s = loop s as | otherwise = a : loop (Set.insert a s) as++-- | Run the second value if the first value returns 'True'+whenM :: Monad m => m Bool -> m () -> m ()+whenM boolM action = do+ x <- boolM+ if x then action else return ()++-- | Run the second value if the first value returns 'False'+unlessM :: Monad m => m Bool -> m () -> m ()+unlessM boolM action = do+ x <- boolM+ if x then return () else action
src/RIO/Prelude/IO.hs view
@@ -2,7 +2,6 @@ ( withLazyFile , readFileBinary , writeFileBinary- , ReadFileUtf8Exception (..) , readFileUtf8 , writeFileUtf8 , hPutBuilder@@ -12,6 +11,8 @@ import qualified Data.ByteString.Builder as BB import qualified Data.ByteString as B import qualified Data.ByteString.Lazy as BL+import qualified Data.Text.IO as T+import System.IO (hSetEncoding, utf8) -- | Lazily get the contents of a file. Unlike 'BL.readFile', this -- ensures that if an exception is thrown, the file handle is closed@@ -19,13 +20,13 @@ withLazyFile :: MonadUnliftIO m => FilePath -> (BL.ByteString -> m a) -> m a withLazyFile fp inner = withBinaryFile fp ReadMode $ inner <=< liftIO . BL.hGetContents -data ReadFileUtf8Exception = ReadFileUtf8Exception !FilePath !UnicodeException- deriving (Show, Typeable)-instance Exception ReadFileUtf8Exception- -- | Write a file in UTF8 encoding+--+-- This function will use OS-specific line ending handling. writeFileUtf8 :: MonadIO m => FilePath -> Text -> m ()-writeFileUtf8 fp = writeFileBinary fp . encodeUtf8+writeFileUtf8 fp text = liftIO $ withFile fp WriteMode $ \h -> do+ hSetEncoding h utf8+ T.hPutStr h text hPutBuilder :: MonadIO m => Handle -> Builder -> m () hPutBuilder h = liftIO . BB.hPutBuilder h@@ -41,9 +42,9 @@ -- | Read a file in UTF8 encoding, throwing an exception on invalid character -- encoding.+--+-- This function will use OS-specific line ending handling. readFileUtf8 :: MonadIO m => FilePath -> m Text-readFileUtf8 fp = do- bs <- readFileBinary fp- case decodeUtf8' bs of- Left e -> throwIO $ ReadFileUtf8Exception fp e- Right text -> return text+readFileUtf8 fp = liftIO $ withFile fp ReadMode $ \h -> do+ hSetEncoding h utf8+ T.hGetContents h
src/RIO/Prelude/Logger.hs view
@@ -40,6 +40,8 @@ , CallStack -- * Convenience functions , displayCallStack+ -- * Accessors+ , logFuncUseColorL ) where import RIO.Prelude.Reexports hiding ((<>))@@ -88,28 +90,32 @@ -- including printing to standard output or no action at all. -- -- @since 0.0.0.0-newtype LogFunc = LogFunc- { _unLogFunc :: CallStack -> LogSource -> LogLevel -> DisplayBuilder -> IO ()+data LogFunc = LogFunc+ { unLogFunc :: !(CallStack -> LogSource -> LogLevel -> Utf8Builder -> IO ())+ , lfOptions :: !(Maybe LogOptions) } -- | Perform both sets of actions per log entry. -- -- @since 0.0.0.0 instance Semigroup LogFunc where- LogFunc f <> LogFunc g = LogFunc $ \a b c d -> f a b c d *> g a b c d+ LogFunc f o1 <> LogFunc g o2 = LogFunc+ { unLogFunc = \a b c d -> f a b c d *> g a b c d+ , lfOptions = o1 `mplus` o2+ } -- | 'mempty' peforms no logging. -- -- @since 0.0.0.0 instance Monoid LogFunc where- mempty = LogFunc $ \_ _ _ _ -> return ()+ mempty = mkLogFunc $ \_ _ _ _ -> return () mappend = (<>) -- | Create a 'LogFunc' from the given function. -- -- @since 0.0.0.0-mkLogFunc :: (CallStack -> LogSource -> LogLevel -> DisplayBuilder -> IO ()) -> LogFunc-mkLogFunc = LogFunc+mkLogFunc :: (CallStack -> LogSource -> LogLevel -> Utf8Builder -> IO ()) -> LogFunc+mkLogFunc f = LogFunc f Nothing -- | Generic, basic function for creating other logging functions. --@@ -118,10 +124,10 @@ :: (MonadIO m, MonadReader env m, HasLogFunc env, HasCallStack) => LogSource -> LogLevel- -> DisplayBuilder+ -> Utf8Builder -> m () logGeneric src level str = do- LogFunc logFunc <- view logFuncL+ LogFunc logFunc _ <- view logFuncL liftIO $ logFunc callStack src level str -- | Log a debug level message with no source.@@ -129,7 +135,7 @@ -- @since 0.0.0.0 logDebug :: (MonadIO m, MonadReader env m, HasLogFunc env, HasCallStack)- => DisplayBuilder+ => Utf8Builder -> m () logDebug = logGeneric "" LevelDebug @@ -138,7 +144,7 @@ -- @since 0.0.0.0 logInfo :: (MonadIO m, MonadReader env m, HasLogFunc env, HasCallStack)- => DisplayBuilder+ => Utf8Builder -> m () logInfo = logGeneric "" LevelInfo @@ -147,7 +153,7 @@ -- @since 0.0.0.0 logWarn :: (MonadIO m, MonadReader env m, HasLogFunc env, HasCallStack)- => DisplayBuilder+ => Utf8Builder -> m () logWarn = logGeneric "" LevelWarn @@ -156,7 +162,7 @@ -- @since 0.0.0.0 logError :: (MonadIO m, MonadReader env m, HasLogFunc env, HasCallStack)- => DisplayBuilder+ => Utf8Builder -> m () logError = logGeneric "" LevelError @@ -166,7 +172,7 @@ logOther :: (MonadIO m, MonadReader env m, HasLogFunc env, HasCallStack) => Text -- ^ level- -> DisplayBuilder+ -> Utf8Builder -> m () logOther = logGeneric "" . LevelOther @@ -176,7 +182,7 @@ logDebugS :: (MonadIO m, MonadReader env m, HasLogFunc env, HasCallStack) => LogSource- -> DisplayBuilder+ -> Utf8Builder -> m () logDebugS src = logGeneric src LevelDebug @@ -186,7 +192,7 @@ logInfoS :: (MonadIO m, MonadReader env m, HasLogFunc env, HasCallStack) => LogSource- -> DisplayBuilder+ -> Utf8Builder -> m () logInfoS src = logGeneric src LevelInfo @@ -196,7 +202,7 @@ logWarnS :: (MonadIO m, MonadReader env m, HasLogFunc env, HasCallStack) => LogSource- -> DisplayBuilder+ -> Utf8Builder -> m () logWarnS src = logGeneric src LevelWarn @@ -206,7 +212,7 @@ logErrorS :: (MonadIO m, MonadReader env m, HasLogFunc env, HasCallStack) => LogSource- -> DisplayBuilder+ -> Utf8Builder -> m () logErrorS src = logGeneric src LevelError @@ -218,7 +224,7 @@ :: (MonadIO m, MonadReader env m, HasLogFunc env, HasCallStack) => Text -- ^ level -> LogSource- -> DisplayBuilder+ -> Utf8Builder -> m () logOtherS src = logGeneric src . LevelOther @@ -234,7 +240,7 @@ -- provided by this module does. -- -- @since 0.0.0.0-logSticky :: (MonadIO m, HasCallStack, MonadReader env m, HasLogFunc env) => DisplayBuilder -> m ()+logSticky :: (MonadIO m, HasCallStack, MonadReader env m, HasLogFunc env) => Utf8Builder -> m () logSticky = logOther "sticky" -- | This will print out the given message with a newline and disable@@ -242,7 +248,7 @@ -- happens. -- -- @since 0.0.0.0-logStickyDone :: (MonadIO m, HasCallStack, MonadReader env m, HasLogFunc env) => DisplayBuilder -> m ()+logStickyDone :: (MonadIO m, HasCallStack, MonadReader env m, HasLogFunc env) => Utf8Builder -> m () logStickyDone = logOther "sticky-done" -- TODO It might be better at some point to have a 'runSticky' function@@ -348,10 +354,17 @@ (\var -> do state <- takeMVar var unless (B.null state) (logSend options "\n"))- (\var -> run $ inner $ LogFunc $ stickyImpl var options (simpleLogFunc options))+ (\var -> run $ inner $ LogFunc+ { unLogFunc = stickyImpl var options (simpleLogFunc options)+ , lfOptions = Just options+ }+ ) else- run $ inner $ LogFunc $ \cs src level str ->- simpleLogFunc options cs src (noSticky level) str+ run $ inner $ LogFunc+ { unLogFunc = \cs src level str ->+ simpleLogFunc options cs src (noSticky level) str+ , lfOptions = Just options+ } -- | Replace Unicode characters with non-Unicode equivalents replaceUnicode :: Char -> Char@@ -420,7 +433,7 @@ setLogUseColor :: Bool -> LogOptions -> LogOptions setLogUseColor c options = options { logUseColor = c } -simpleLogFunc :: LogOptions -> CallStack -> LogSource -> LogLevel -> DisplayBuilder -> IO ()+simpleLogFunc :: LogOptions -> CallStack -> LogSource -> LogLevel -> Utf8Builder -> IO () simpleLogFunc lo cs _src level msg = when (level >= logMinLevel lo) $ do timestamp <- getTimestamp@@ -441,11 +454,11 @@ setRed = "\ESC[31m" setMagenta = "\ESC[35m" - ansi :: DisplayBuilder -> DisplayBuilder+ ansi :: Utf8Builder -> Utf8Builder ansi xs | logUseColor lo = xs | otherwise = mempty - getTimestamp :: IO DisplayBuilder+ getTimestamp :: IO Utf8Builder getTimestamp | logVerboseFormat lo && logUseTime lo = do now <- getZonedTime@@ -455,7 +468,7 @@ formatTime' = take timestampLength . formatTime defaultTimeLocale "%F %T.%q" - getLevel :: DisplayBuilder+ getLevel :: Utf8Builder getLevel | logVerboseFormat lo = case level of@@ -470,18 +483,18 @@ "] " | otherwise = mempty - getLoc :: DisplayBuilder+ getLoc :: Utf8Builder getLoc | logVerboseFormat lo = ansi setBlack <> "\n@(" <> displayCallStack cs <> ")" | otherwise = mempty --- | Convert a 'CallStack' value into a 'DisplayBuilder' indicating+-- | Convert a 'CallStack' value into a 'Utf8Builder' indicating -- the first source location. -- -- TODO Consider showing the entire call stack instead. -- -- @since 0.0.0.0-displayCallStack :: CallStack -> DisplayBuilder+displayCallStack :: CallStack -> Utf8Builder displayCallStack cs = case reverse $ getCallStack cs of [] -> "<no call stack found>"@@ -501,8 +514,8 @@ stickyImpl :: MVar ByteString -> LogOptions- -> (CallStack -> LogSource -> LogLevel -> DisplayBuilder -> IO ())- -> CallStack -> LogSource -> LogLevel -> DisplayBuilder -> IO ()+ -> (CallStack -> LogSource -> LogLevel -> Utf8Builder -> IO ())+ -> CallStack -> LogSource -> LogLevel -> Utf8Builder -> IO () stickyImpl ref lo logFunc loc src level msgOrig = modifyMVar_ ref $ \sticky -> do let backSpaceChar = '\8' repeating = mconcat . replicate (B.length sticky) . char7@@ -528,3 +541,12 @@ unless (B.null sticky) $ logSend lo (byteString sticky <> flush) return sticky | otherwise -> return sticky++-- | Is the log func configured to use color output?+--+-- Intended for use by code which wants to optionally add additional color to+-- its log messages.+--+-- @since 0.1.0.0+logFuncUseColorL :: HasLogFunc env => SimpleGetter env Bool+logFuncUseColorL = logFuncL.to (maybe False logUseColor . lfOptions)
src/RIO/Prelude/RIO.hs view
@@ -1,4 +1,5 @@ {-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE TypeFamilies #-} module RIO.Prelude.RIO ( RIO (..) , runRIO@@ -30,3 +31,7 @@ askUnliftIO = RIO $ ReaderT $ \r -> withUnliftIO $ \u -> return (UnliftIO (unliftIO u . flip runReaderT r . unRIO))++instance PrimMonad (RIO env) where+ type PrimState (RIO env) = PrimState IO+ primitive = RIO . ReaderT . const . primitive
src/RIO/Prelude/Reexports.hs view
@@ -2,7 +2,13 @@ module RIO.Prelude.Reexports ( module UnliftIO -- List imports from UnliftIO?+ , UnliftIO.Concurrent.ThreadId+ , UnliftIO.Concurrent.myThreadId+ , UnliftIO.Concurrent.isCurrentThreadBound+ , UnliftIO.Concurrent.threadWaitRead+ , UnliftIO.Concurrent.threadWaitWrite , UnliftIO.Concurrent.threadDelay+ , yieldThread , Control.Applicative.Alternative , Control.Applicative.Applicative (..) , Control.Applicative.liftA@@ -48,6 +54,7 @@ , Control.Monad.Reader.asks , Control.Monad.Reader.local , Data.Bool.Bool(..)+ , Data.Bool.bool , Data.Bool.not , Data.Bool.otherwise , (Data.Bool.&&)@@ -142,19 +149,11 @@ , Data.Maybe.mapMaybe , Data.Maybe.maybe , Data.Maybe.maybeToList- , Data.Monoid.All (..)- , Data.Monoid.Any (..)- , Data.Monoid.Endo (..)- , Data.Monoid.First (..)- , Data.Monoid.Last (..) , Data.Monoid.Monoid (..)- , Data.Monoid.Product (..)- , Data.Monoid.Sum (..)- , (Data.Monoid.<>) , Data.Ord.Ord(..) , Data.Ord.Ordering(..) , Data.Ord.comparing- , Data.Semigroup.Semigroup+ , Data.Semigroup.Semigroup (..) , Data.Set.Set , Data.String.IsString(..) , Data.Text.Text@@ -240,9 +239,9 @@ import Data.Functor (Functor (..)) import Data.Int (Int) import Data.Maybe (Maybe, catMaybes, fromMaybe)-import Data.Monoid (First (..), Monoid (..))+import Data.Monoid (Monoid (..)) import Data.Ord (Ord)-import Data.Semigroup (Semigroup)+import Data.Semigroup (Semigroup (..)) import Data.String (IsString (..)) import Data.Text (Text) import Data.Text.Encoding (decodeUtf8', decodeUtf8With,@@ -283,7 +282,6 @@ import qualified Data.List import qualified Data.Map.Strict import qualified Data.Maybe-import qualified Data.Monoid import qualified Data.Ord import qualified Data.Set import qualified Data.Text.Encoding.Error@@ -297,3 +295,7 @@ import qualified Prelude import qualified System.Exit import qualified Text.Read++yieldThread :: MonadIO m => m ()+yieldThread = UnliftIO.Concurrent.yield+{-# INLINE yieldThread #-}
src/RIO/Prelude/Text.hs view
@@ -1,7 +1,6 @@ {-# LANGUAGE OverloadedStrings #-} module RIO.Prelude.Text- ( stripCR- , decodeUtf8Lenient+ ( decodeUtf8Lenient , tshow ) where @@ -9,10 +8,6 @@ import Data.Text.Encoding (decodeUtf8With) import RIO.Prelude.Reexports import Data.Text.Encoding.Error (lenientDecode)---- | Strip trailing carriage return from Text-stripCR :: Text -> Text-stripCR t = fromMaybe t (T.stripSuffix "\r" t) tshow :: Show a => a -> Text tshow = T.pack . show
+ src/RIO/Prelude/Trace.hs view
@@ -0,0 +1,186 @@+module RIO.Prelude.Trace+ ( -- * Text+ trace+ , traceId+ , traceIO+ , traceM+ , traceEvent+ , traceEventIO+ , traceMarker+ , traceMarkerIO+ , traceStack+ -- * Show+ , traceShow+ , traceShowId+ , traceShowIO+ , traceShowM+ , traceShowEvent+ , traceShowEventIO+ , traceShowMarker+ , traceShowMarkerIO+ , traceShowStack+ -- * Display+ , traceDisplay+ , traceDisplayId+ , traceDisplayIO+ , traceDisplayM+ , traceDisplayEvent+ , traceDisplayEventIO+ , traceDisplayMarker+ , traceDisplayMarkerIO+ , traceDisplayStack+ ) where++import qualified Debug.Trace as Trace++import Control.Monad.IO.Class(MonadIO(..))+import RIO.Prelude.Display+import RIO.Text (Text)+import qualified RIO.Text as Text++----------------------------------------------------+-- Text+----------------------------------------------------++{-# WARNING trace "Trace statement left in code" #-}+-- | @since 0.1.0.0+trace :: Text -> a -> a+trace = Trace.trace . Text.unpack++{-# WARNING traceId "Trace statement left in code" #-}+-- | @since 0.1.0.0+traceId :: Text -> Text+traceId str = Trace.trace (Text.unpack str) str++{-# WARNING traceIO "Trace statement left in code" #-}+-- | @since 0.1.0.0+traceIO :: MonadIO m => Text -> m ()+traceIO = liftIO . Trace.traceIO . Text.unpack++{-# WARNING traceM "Trace statement left in code" #-}+-- | @since 0.1.0.0+traceM :: Applicative f => Text -> f ()+traceM = Trace.traceM . Text.unpack++{-# WARNING traceEvent "Trace statement left in code" #-}+-- | @since 0.1.0.0+traceEvent :: Text -> a -> a+traceEvent = Trace.traceEvent . Text.unpack++{-# WARNING traceEventIO "Trace statement left in code" #-}+-- | @since 0.1.0.0+traceEventIO :: MonadIO m => Text -> m ()+traceEventIO = liftIO . Trace.traceEventIO . Text.unpack++{-# WARNING traceMarker "Trace statement left in code" #-}+-- | @since 0.1.0.0+traceMarker :: Text -> a -> a+traceMarker = Trace.traceMarker . Text.unpack++{-# WARNING traceMarkerIO "Trace statement left in code" #-}+-- | @since 0.1.0.0+traceMarkerIO :: MonadIO m => Text -> m ()+traceMarkerIO = liftIO . Trace.traceMarkerIO . Text.unpack++{-# WARNING traceStack "Trace statement left in code" #-}+-- | @since 0.1.0.0+traceStack :: Text -> a -> a+traceStack = Trace.traceStack . Text.unpack++----------------------------------------------------+-- Show+----------------------------------------------------++{-# WARNING traceShow "Trace statement left in code" #-}+-- | @since 0.1.0.0+traceShow :: Show a => a -> b -> b+traceShow = Trace.traceShow++{-# WARNING traceShowId "Trace statement left in code" #-}+-- | @since 0.1.0.0+traceShowId :: Show a => a -> a+traceShowId = Trace.traceShowId++{-# WARNING traceShowIO "Trace statement left in code" #-}+-- | @since 0.1.0.0+traceShowIO :: (Show a, MonadIO m) => a -> m ()+traceShowIO = liftIO . Trace.traceIO . show++{-# WARNING traceShowM "Trace statement left in code" #-}+-- | @since 0.1.0.0+traceShowM :: (Show a, Applicative f) => a -> f ()+traceShowM = Trace.traceM . show++{-# WARNING traceShowEvent "Trace statement left in code" #-}+-- | @since 0.1.0.0+traceShowEvent :: Show a => a -> b -> b+traceShowEvent = Trace.traceEvent . show++{-# WARNING traceShowEventIO "Trace statement left in code" #-}+-- | @since 0.1.0.0+traceShowEventIO :: (Show a, MonadIO m) => a -> m ()+traceShowEventIO = liftIO . Trace.traceEventIO . show++{-# WARNING traceShowMarker "Trace statement left in code" #-}+-- | @since 0.1.0.0+traceShowMarker :: Show a => a -> b -> b+traceShowMarker = Trace.traceMarker . show++{-# WARNING traceShowMarkerIO "Trace statement left in code" #-}+-- | @since 0.1.0.0+traceShowMarkerIO :: (Show a, MonadIO m) => a -> m ()+traceShowMarkerIO = liftIO . Trace.traceMarkerIO . show++{-# WARNING traceShowStack "Trace statement left in code" #-}+-- | @since 0.1.0.0+traceShowStack :: Show a => a -> b -> b+traceShowStack = Trace.traceStack . show++----------------------------------------------------+-- Display+----------------------------------------------------++{-# WARNING traceDisplay "Trace statement left in code" #-}+-- | @since 0.1.0.0+traceDisplay :: Display a => a -> b -> b+traceDisplay = trace . utf8BuilderToText . display++{-# WARNING traceDisplayId "Trace statement left in code" #-}+-- | @since 0.1.0.0+traceDisplayId :: Display a => a -> a+traceDisplayId x = traceDisplay x x++{-# WARNING traceDisplayIO "Trace statement left in code" #-}+-- | @since 0.1.0.0+traceDisplayIO :: (Display a, MonadIO m) => a -> m ()+traceDisplayIO = traceIO . utf8BuilderToText . display++{-# WARNING traceDisplayM "Trace statement left in code" #-}+-- | @since 0.1.0.0+traceDisplayM :: (Display a, Applicative f) => a -> f ()+traceDisplayM = traceM . utf8BuilderToText . display++{-# WARNING traceDisplayEvent "Trace statement left in code" #-}+-- | @since 0.1.0.0+traceDisplayEvent :: Display a => a -> b -> b+traceDisplayEvent = traceEvent . utf8BuilderToText . display++{-# WARNING traceDisplayEventIO "Trace statement left in code" #-}+-- | @since 0.1.0.0+traceDisplayEventIO :: (Display a, MonadIO m) => a -> m ()+traceDisplayEventIO = traceEventIO . utf8BuilderToText . display++{-# WARNING traceDisplayMarker "Trace statement left in code" #-}+-- | @since 0.1.0.0+traceDisplayMarker :: Display a => a -> b -> b+traceDisplayMarker = traceMarker . utf8BuilderToText . display++{-# WARNING traceDisplayMarkerIO "Trace statement left in code" #-}+-- | @since 0.1.0.0+traceDisplayMarkerIO :: (Display a, MonadIO m) => a -> m ()+traceDisplayMarkerIO = traceMarkerIO . utf8BuilderToText . display++{-# WARNING traceDisplayStack "Trace statement left in code" #-}+-- | @since 0.1.0.0+traceDisplayStack :: Display a => a -> b -> b+traceDisplayStack = traceStack . utf8BuilderToText . display
src/RIO/Process.hs view
@@ -379,17 +379,16 @@ x <- proc' end <- getMonotonicTime let diff = end - start- -- useAnsi <- asks getAnsiTerminal FIXME- let useAnsi = True+ useColor <- view logFuncUseColorL logDebug ("Process finished in " <>- (if useAnsi then "\ESC[92m" else "") <> -- green+ (if useColor then "\ESC[92m" else "") <> -- green timeSpecMilliSecondText diff <>- (if useAnsi then "\ESC[0m" else "") <> -- reset+ (if useColor then "\ESC[0m" else "") <> -- reset ": " <> display cmdText) return x -timeSpecMilliSecondText :: Double -> DisplayBuilder+timeSpecMilliSecondText :: Double -> Utf8Builder timeSpecMilliSecondText d = display (round (d * 1000) :: Int) <> "ms" -- | Provide a 'ProcessConfig' based on the 'ProcessContext' in
+ src/RIO/Seq.hs view
@@ -0,0 +1,135 @@+{-# LANGUAGE CPP #-}+-- | @Seq@. Import as:+--+-- > import qualified RIO.Seq as Seq+module RIO.Seq+ (+ Data.Sequence.Seq(..)++ -- * Construction+ , Data.Sequence.empty+ , Data.Sequence.singleton+ , (Data.Sequence.<|)+ , (Data.Sequence.|>)+ , (Data.Sequence.><)+ , Data.Sequence.fromList+ , Data.Sequence.fromFunction+ , Data.Sequence.fromArray++ -- ** Repetition+ , Data.Sequence.replicate+ , Data.Sequence.replicateA+ , Data.Sequence.replicateM+#if MIN_VERSION_containers(0, 5, 8)+ , Data.Sequence.cycleTaking+#endif++ -- ** Iterative construction+ , Data.Sequence.iterateN+ , Data.Sequence.unfoldr+ , Data.Sequence.unfoldl++ -- * Deconstruction+ -- | Additional functions for deconstructing sequences are available via the+ -- 'Foldable' instance of 'Seq'.++ -- ** Queries+ , Data.Sequence.null+ , Data.Sequence.length+ -- ** Views+ , Data.Sequence.ViewL(..)+ , Data.Sequence.viewl+ , Data.Sequence.ViewR(..)+ , Data.Sequence.viewr++ -- * Scans+ , Data.Sequence.scanl+ , Data.Sequence.scanl1+ , Data.Sequence.scanr+ , Data.Sequence.scanr1++ -- * Sublists+ , Data.Sequence.tails+ , Data.Sequence.inits+#if MIN_VERSION_containers(0, 5, 8)+ , Data.Sequence.chunksOf+#endif++ -- ** Sequential searches+ , Data.Sequence.takeWhileL+ , Data.Sequence.takeWhileR+ , Data.Sequence.dropWhileL+ , Data.Sequence.dropWhileR+ , Data.Sequence.spanl+ , Data.Sequence.spanr+ , Data.Sequence.breakl+ , Data.Sequence.breakr+ , Data.Sequence.partition+ , Data.Sequence.filter++ -- * Sorting+ , Data.Sequence.sort+ , Data.Sequence.sortBy+ , Data.Sequence.unstableSort+ , Data.Sequence.unstableSortBy++ -- * Indexing+#if MIN_VERSION_containers(0, 5, 8)+ , Data.Sequence.lookup+ , (Data.Sequence.!?)+#endif+ , Data.Sequence.index+ , Data.Sequence.adjust++#if MIN_VERSION_containers(0, 5, 8)+ , Data.Sequence.adjust'+#endif+ , Data.Sequence.update+ , Data.Sequence.take+ , Data.Sequence.drop+#if MIN_VERSION_containers(0, 5, 8)+ , Data.Sequence.insertAt+ , Data.Sequence.deleteAt+#endif+ , Data.Sequence.splitAt++ -- ** Indexing with predicates+ -- | These functions perform sequential searches from the left or right ends+ -- of the sequence elements.+ , Data.Sequence.elemIndexL+ , Data.Sequence.elemIndicesL+ , Data.Sequence.elemIndexR+ , Data.Sequence.elemIndicesR+ , Data.Sequence.findIndexL+ , Data.Sequence.findIndicesL+ , Data.Sequence.findIndexR+ , Data.Sequence.findIndicesR++ -- * Folds+ -- | General folds are available via the 'Foldable' instance of 'Seq'.+#if MIN_VERSION_containers(0, 5, 8)+ , Data.Sequence.foldMapWithIndex+#endif+ , Data.Sequence.foldlWithIndex+ , Data.Sequence.foldrWithIndex++ -- * Transformations+ , Data.Sequence.mapWithIndex+#if MIN_VERSION_containers(0, 5, 8)+ , Data.Sequence.traverseWithIndex+#endif+ , Data.Sequence.reverse+#if MIN_VERSION_containers(0, 5, 8)+ , Data.Sequence.intersperse+#endif++ -- ** Zips+ , Data.Sequence.zip+ , Data.Sequence.zipWith+ , Data.Sequence.zip3+ , Data.Sequence.zipWith3+ , Data.Sequence.zip4+ , Data.Sequence.zipWith4+ ) where++import qualified Data.Sequence
src/RIO/Set.hs view
@@ -1,8 +1,94 @@+{-# LANGUAGE CPP #-} -- | @Set@. Import as: ----- > import qualified RIO.Set as S+-- > import qualified RIO.Set as Set module RIO.Set- ( module Data.Set+ (+ -- * Set type+ Data.Set.Set++ -- * Operators+ , (Data.Set.\\)++ -- * Query+ , Data.Set.null+ , Data.Set.size+ , Data.Set.member+ , Data.Set.notMember+ , Data.Set.lookupLT+ , Data.Set.lookupGT+ , Data.Set.lookupLE+ , Data.Set.lookupGE+ , Data.Set.isSubsetOf+ , Data.Set.isProperSubsetOf++ -- * Construction+ , Data.Set.empty+ , Data.Set.singleton+ , Data.Set.insert+ , Data.Set.delete++ -- * Combine+ , Data.Set.union+ , Data.Set.unions+ , Data.Set.difference+ , Data.Set.intersection++ -- * Filter+ , Data.Set.filter+#if MIN_VERSION_containers(0,5,8)+ , Data.Set.takeWhileAntitone+ , Data.Set.dropWhileAntitone+ , Data.Set.spanAntitone+#endif+ , Data.Set.partition+ , Data.Set.split+ , Data.Set.splitMember+ , Data.Set.splitRoot++ -- * Indexed+ , Data.Set.lookupIndex+#if MIN_VERSION_containers(0,5,8)+ , Data.Set.take+ , Data.Set.drop+ , Data.Set.splitAt+#endif++ -- * Map+ , Data.Set.map++ -- * Folds+ , Data.Set.foldr+ , Data.Set.foldl+ -- ** Strict folds+ , Data.Set.foldr'+ , Data.Set.foldl'++ -- * Min\/Max+#if MIN_VERSION_containers(0,5,9)+ , Data.Set.lookupMin+ , Data.Set.lookupMax+#endif+ , Data.Set.deleteMin+ , Data.Set.deleteMax+ , Data.Set.maxView+ , Data.Set.minView++ -- * Conversion++ -- ** List+ , Data.Set.elems+ , Data.Set.toList+ , Data.Set.fromList++ -- ** Ordered list+ , Data.Set.toAscList+ , Data.Set.toDescList++ -- * Debugging+ , Data.Set.showTree+ , Data.Set.showTreeWith+ , Data.Set.valid ) where -import Data.Set+import qualified Data.Set
+ src/RIO/Set/Partial.hs view
@@ -0,0 +1,15 @@+module RIO.Set.Partial+ (+ -- * Indexed+ Data.Set.findIndex+ , Data.Set.elemAt+ , Data.Set.deleteAt++ -- * Min\/Max+ , Data.Set.findMin+ , Data.Set.findMax+ , Data.Set.deleteFindMin+ , Data.Set.deleteFindMax+ ) where++import qualified Data.Set
+ src/RIO/Set/Unchecked.hs view
@@ -0,0 +1,23 @@+{-# LANGUAGE CPP #-}++-- | This module contains functions from "Data.Set" that have unchecked+-- preconditions on their input. If these preconditions are not satisfied,+-- the data structure may end up in an invalid state and other operations+-- may misbehave.+module RIO.Set.Unchecked+ (+ -- * Map+ Data.Set.mapMonotonic++ -- * Ordered list+ , Data.Set.fromAscList+#if MIN_VERSION_containers(0,5,8)+ , Data.Set.fromDescList+#endif+ , Data.Set.fromDistinctAscList+#if MIN_VERSION_containers(0,5,8)+ , Data.Set.fromDistinctDescList+#endif+ ) where++import qualified Data.Set
src/RIO/Text.hs view
@@ -1,20 +1,153 @@+{-# LANGUAGE MagicHash #-}+{-# LANGUAGE OverloadedStrings #-}+ -- | Strict @Text@. Import as: ----- > import qualified RIO.Text as T+-- > import qualified RIO.Text as Text+--+-- This module does not export any partial functions. For those, see+-- "RIO.Text.Partial" module RIO.Text- ( module Data.Text- , Data.Text.Encoding.encodeUtf8- , Data.Text.Encoding.decodeUtf8With- , Data.Text.Encoding.decodeUtf8'- , Data.Text.Encoding.Error.lenientDecode- , dropPrefix- , dropSuffix- ) where+ (+ -- * Types+ Data.Text.Text -import Data.Text -- FIXME hide partials+ -- * Creation and elimination+ , Data.Text.pack+ , Data.Text.unpack+ , Data.Text.singleton+ , Data.Text.empty++ -- * Basic interface+ , Data.Text.cons+ , Data.Text.snoc+ , Data.Text.append+ , Data.Text.uncons+ , Data.Text.null+ , Data.Text.length+ , Data.Text.compareLength++ -- * Transformations+ , Data.Text.map+ , Data.Text.intercalate+ , Data.Text.intersperse+ , Data.Text.transpose+ , Data.Text.reverse++ -- ** Case conversion+ , Data.Text.toCaseFold+ , Data.Text.toLower+ , Data.Text.toUpper+ , Data.Text.toTitle++ -- ** Justification+ , Data.Text.justifyLeft+ , Data.Text.justifyRight+ , Data.Text.center++ -- * Folds+ , Data.Text.foldl+ , Data.Text.foldl'+ , Data.Text.foldr++ -- ** Special folds+ , Data.Text.concat+ , Data.Text.concatMap+ , Data.Text.any+ , Data.Text.all++ -- * Construction++ -- ** Scans+ , Data.Text.scanl+ , Data.Text.scanl1 -- scanl1 and scanr1 are /not/ partial+ , Data.Text.scanr+ , Data.Text.scanr1++ -- ** Accumulating maps+ , Data.Text.mapAccumL+ , Data.Text.mapAccumR++ -- ** Generation and unfolding+ , Data.Text.replicate+ , Data.Text.unfoldr+ , Data.Text.unfoldrN++ -- * Substrings++ -- ** Breaking strings+ , Data.Text.take+ , Data.Text.takeEnd+ , Data.Text.drop+ , Data.Text.dropEnd+ , Data.Text.takeWhile+ , Data.Text.takeWhileEnd+ , Data.Text.dropWhile+ , Data.Text.dropWhileEnd+ , Data.Text.dropAround+ , Data.Text.strip+ , Data.Text.stripStart+ , Data.Text.stripEnd+ , Data.Text.splitAt+ , Data.Text.break+ , Data.Text.span+ , Data.Text.group+ , Data.Text.groupBy+ , Data.Text.inits+ , Data.Text.tails++ -- ** Breaking into many substrings+ , Data.Text.split+ , Data.Text.chunksOf++ -- ** Breaking into lines and words+ , Data.Text.lines+ , linesCR+ , Data.Text.words+ , Data.Text.unlines+ , Data.Text.unwords++ -- * Predicates+ , Data.Text.isPrefixOf+ , Data.Text.isSuffixOf+ , Data.Text.isInfixOf++ -- ** View patterns+ , Data.Text.stripPrefix+ , Data.Text.stripSuffix+ , dropPrefix+ , dropSuffix+ , Data.Text.commonPrefixes++ -- * Searching+ , Data.Text.filter+ , Data.Text.find+ , Data.Text.partition++ -- * Indexing+ , Data.Text.index+ , Data.Text.findIndex++ -- * Zipping+ , Data.Text.zip+ , Data.Text.zipWith++ -- * Low level operations+ , Data.Text.copy+ , Data.Text.unpackCString#++ -- * Encoding+ , Data.Text.Encoding.encodeUtf8+ , Data.Text.Encoding.decodeUtf8With+ , Data.Text.Encoding.decodeUtf8'+ , Data.Text.Encoding.Error.lenientDecode+ ) where++import Data.Maybe (fromMaybe)+import Data.Text (Text, stripPrefix, stripSuffix)+import qualified Data.Text import qualified Data.Text.Encoding import qualified Data.Text.Encoding.Error-import Data.Maybe (fromMaybe) -- | Drop prefix if present, otherwise return original 'Text'. --@@ -31,3 +164,12 @@ -> Text -> Text dropSuffix suffix t = fromMaybe t (stripSuffix suffix t)++-- | 'linesCR' breaks a 'Text' up into a list of `Text`s at newline+-- 'Char's. It is very similar to 'Data.Text.lines', but it also removes+-- any trailing @'\r'@ characters. The resulting 'Text' values do not+-- contain newlines or trailing @'\r'@ characters.+--+-- @since 0.1.0.0+linesCR :: Text -> [Text]+linesCR = map (dropSuffix "\r") . Data.Text.lines
src/RIO/Text/Lazy.hs view
@@ -1,8 +1,139 @@ -- | Lazy @Text@. Import as: ----- > import qualified RIO.Text.Lazy as T.Lazy+-- > import qualified RIO.Text.Lazy as TL+--+-- This module does not export any partial functions. For those, see+-- "RIO.Text.Lazy.Partial" module RIO.Text.Lazy- ( module Data.Text.Lazy- ) where+ (+ -- * Types+ Data.Text.Lazy.Text -import Data.Text.Lazy+ -- * Creation and elimination+ , Data.Text.Lazy.pack+ , Data.Text.Lazy.unpack+ , Data.Text.Lazy.singleton+ , Data.Text.Lazy.empty+ , Data.Text.Lazy.fromChunks+ , Data.Text.Lazy.toChunks+ , Data.Text.Lazy.toStrict+ , Data.Text.Lazy.fromStrict+ , Data.Text.Lazy.foldrChunks+ , Data.Text.Lazy.foldlChunks++ -- * Basic interface+ , Data.Text.Lazy.cons+ , Data.Text.Lazy.snoc+ , Data.Text.Lazy.append+ , Data.Text.Lazy.uncons+ , Data.Text.Lazy.null+ , Data.Text.Lazy.length+ , Data.Text.Lazy.compareLength++ -- * Transformations+ , Data.Text.Lazy.map+ , Data.Text.Lazy.intercalate+ , Data.Text.Lazy.intersperse+ , Data.Text.Lazy.transpose+ , Data.Text.Lazy.reverse++ -- ** Case conversion+ , Data.Text.Lazy.toCaseFold+ , Data.Text.Lazy.toLower+ , Data.Text.Lazy.toUpper+ , Data.Text.Lazy.toTitle++ -- ** Justification+ , Data.Text.Lazy.justifyLeft+ , Data.Text.Lazy.justifyRight+ , Data.Text.Lazy.center++ -- * Folds+ , Data.Text.Lazy.foldl+ , Data.Text.Lazy.foldl'+ , Data.Text.Lazy.foldr++ -- ** Special folds+ , Data.Text.Lazy.concat+ , Data.Text.Lazy.concatMap+ , Data.Text.Lazy.any+ , Data.Text.Lazy.all++ -- * Construction++ -- ** Scans+ , Data.Text.Lazy.scanl+ , Data.Text.Lazy.scanl1 -- NB. scanl1 and scanr1 are not partial+ , Data.Text.Lazy.scanr+ , Data.Text.Lazy.scanr1++ -- ** Accumulating maps+ , Data.Text.Lazy.mapAccumL+ , Data.Text.Lazy.mapAccumR++ -- ** Generation and unfolding+ , Data.Text.Lazy.repeat+ , Data.Text.Lazy.replicate+ , Data.Text.Lazy.cycle+ , Data.Text.Lazy.iterate+ , Data.Text.Lazy.unfoldr+ , Data.Text.Lazy.unfoldrN++ -- * Substrings++ -- ** Breaking strings+ , Data.Text.Lazy.take+ , Data.Text.Lazy.takeEnd+ , Data.Text.Lazy.drop+ , Data.Text.Lazy.dropEnd+ , Data.Text.Lazy.takeWhile+ , Data.Text.Lazy.takeWhileEnd+ , Data.Text.Lazy.dropWhile+ , Data.Text.Lazy.dropWhileEnd+ , Data.Text.Lazy.dropAround+ , Data.Text.Lazy.strip+ , Data.Text.Lazy.stripStart+ , Data.Text.Lazy.stripEnd+ , Data.Text.Lazy.splitAt+ , Data.Text.Lazy.span+ , Data.Text.Lazy.break+ , Data.Text.Lazy.group+ , Data.Text.Lazy.groupBy+ , Data.Text.Lazy.inits+ , Data.Text.Lazy.tails++ -- ** Breaking into many substrings+ , Data.Text.Lazy.split+ , Data.Text.Lazy.chunksOf++ -- ** Breaking into lines and words+ , Data.Text.Lazy.lines+ , Data.Text.Lazy.words+ , Data.Text.Lazy.unlines+ , Data.Text.Lazy.unwords++ -- * Predicates+ , Data.Text.Lazy.isPrefixOf+ , Data.Text.Lazy.isSuffixOf+ , Data.Text.Lazy.isInfixOf++ -- ** View patterns+ , Data.Text.Lazy.stripPrefix+ , Data.Text.Lazy.stripSuffix+ , Data.Text.Lazy.commonPrefixes++ -- * Searching+ , Data.Text.Lazy.filter+ , Data.Text.Lazy.find+ , Data.Text.Lazy.partition++ -- * Indexing+ , Data.Text.Lazy.index+ , Data.Text.Lazy.count++ -- * Zipping and unzipping+ , Data.Text.Lazy.zip+ , Data.Text.Lazy.zipWith+ ) where++import qualified Data.Text.Lazy
+ src/RIO/Text/Lazy/Partial.hs view
@@ -0,0 +1,36 @@+-- | This module exports all the partial functions from "Data.Text.Lazy"++module RIO.Text.Lazy.Partial+ (+ -- * Creation and elimination+ Data.Text.Lazy.head+ , Data.Text.Lazy.last+ , Data.Text.Lazy.tail+ , Data.Text.Lazy.init++ -- * Transformations+ , Data.Text.Lazy.replace++ -- * Folds+ , Data.Text.Lazy.foldl1+ , Data.Text.Lazy.foldl1'+ , Data.Text.Lazy.foldr1++ -- ** Special folds+ , Data.Text.Lazy.maximum+ , Data.Text.Lazy.minimum++ -- * Substrings++ -- ** Breaking strings+ , Data.Text.Lazy.breakOn+ , Data.Text.Lazy.breakOnEnd++ -- ** Breaking into many substrings+ , Data.Text.Lazy.splitOn++ -- * Searching+ , Data.Text.Lazy.breakOnAll+ ) where++import qualified Data.Text.Lazy
+ src/RIO/Text/Partial.hs view
@@ -0,0 +1,39 @@+-- | This module exports all the partial functions from "Data.Text"++module RIO.Text.Partial+ (+ -- * Basic interface+ Data.Text.head+ , Data.Text.last+ , Data.Text.tail+ , Data.Text.init++ -- * Transformations+ , Data.Text.replace++ -- * Folds+ , Data.Text.foldl1+ , Data.Text.foldl1'+ , Data.Text.foldr1++ -- ** Special folds+ , Data.Text.maximum+ , Data.Text.minimum++ -- * Substrings++ -- ** Breaking strings+ , Data.Text.breakOn+ , Data.Text.breakOnEnd++ -- ** Breaking into many substrings+ , Data.Text.splitOn++ -- * Searching+ , Data.Text.breakOnAll++ -- * Indexing+ , Data.Text.count+ ) where++import qualified Data.Text
src/RIO/Time.hs view
@@ -1,5 +1,28 @@ module RIO.Time ( module Data.Time+ , getCurrentTime+ , getTimeZone+ , getCurrentTimeZone+ , getZonedTime+ , utcToLocalZonedTime ) where -import Data.Time+import Control.Monad.IO.Class+import Data.Time hiding( getCurrentTime, getTimeZone, getCurrentTimeZone+ , getZonedTime, utcToLocalZonedTime)+import qualified Data.Time++getCurrentTime :: MonadIO m => m UTCTime+getCurrentTime = liftIO Data.Time.getCurrentTime++getTimeZone :: MonadIO m => UTCTime -> m TimeZone+getTimeZone = liftIO . Data.Time.getTimeZone++getCurrentTimeZone :: MonadIO m => m TimeZone+getCurrentTimeZone = liftIO Data.Time.getCurrentTimeZone++getZonedTime :: MonadIO m => m ZonedTime+getZonedTime = liftIO Data.Time.getZonedTime++utcToLocalZonedTime :: MonadIO m => UTCTime -> m ZonedTime+utcToLocalZonedTime = liftIO . Data.Time.utcToLocalZonedTime
src/RIO/Vector.hs view
@@ -1,8 +1,255 @@+{-# LANGUAGE CPP #-} -- | Generic @Vector@ interface. Import as: -- -- > import qualified RIO.Vector as V module RIO.Vector- ( module Data.Vector.Generic+ (+ -- * Immutable vectors+ Data.Vector.Generic.Vector++ -- * Accessors+ -- ** Length information+ , Data.Vector.Generic.length+ , Data.Vector.Generic.null++ -- ** Indexing+ , (Data.Vector.Generic.!?)++ -- ** Extracting subvectors+ , Data.Vector.Generic.slice+ , Data.Vector.Generic.take+ , Data.Vector.Generic.drop+ , Data.Vector.Generic.splitAt++ -- * Construction+ -- ** Initialisation+ , Data.Vector.Generic.empty+ , Data.Vector.Generic.singleton+ , Data.Vector.Generic.replicate+ , Data.Vector.Generic.generate+ , Data.Vector.Generic.iterateN++ -- ** Monadic initialisation+ , Data.Vector.Generic.replicateM+ , Data.Vector.Generic.generateM+#if MIN_VERSION_vector(0,12,0)+ , Data.Vector.Generic.iterateNM+#endif+ , Data.Vector.Generic.create+#if MIN_VERSION_vector(0,12,0)+ , Data.Vector.Generic.createT+#endif++ -- ** Unfolding+ , Data.Vector.Generic.unfoldr+ , Data.Vector.Generic.unfoldrN+#if MIN_VERSION_vector(0,12,0)+ , Data.Vector.Generic.unfoldrM+ , Data.Vector.Generic.unfoldrNM+#endif+ , Data.Vector.Generic.constructN+ , Data.Vector.Generic.constructrN++ -- ** Enumeration+ , Data.Vector.Generic.enumFromN+ , Data.Vector.Generic.enumFromStepN+ , Data.Vector.Generic.enumFromTo+ , Data.Vector.Generic.enumFromThenTo++ -- ** Concatenation+ , Data.Vector.Generic.cons+ , Data.Vector.Generic.snoc+ , (Data.Vector.Generic.++)+ , Data.Vector.Generic.concat+#if MIN_VERSION_vector(0,12,0)+ , Data.Vector.Generic.concatNE+#endif++ -- ** Restricting memory usage+ , Data.Vector.Generic.force++ -- * Modifying vectors+ -- ** Permutations+ , Data.Vector.Generic.reverse++ -- ** Safe destructive update+ , Data.Vector.Generic.modify++ -- * Elementwise operations+ -- ** Indexing+ , Data.Vector.Generic.indexed++ -- ** Mapping+ , Data.Vector.Generic.map+ , Data.Vector.Generic.imap+ , Data.Vector.Generic.concatMap++ -- ** Monadic mapping+ , Data.Vector.Generic.mapM+ , Data.Vector.Generic.imapM+ , Data.Vector.Generic.mapM_+ , Data.Vector.Generic.imapM_+ , Data.Vector.Generic.forM+ , Data.Vector.Generic.forM_++ -- ** Zipping+ , Data.Vector.Generic.zipWith+ , Data.Vector.Generic.zipWith3+ , Data.Vector.Generic.zipWith4+ , Data.Vector.Generic.zipWith5+ , Data.Vector.Generic.zipWith6+ , Data.Vector.Generic.izipWith+ , Data.Vector.Generic.izipWith3+ , Data.Vector.Generic.izipWith4+ , Data.Vector.Generic.izipWith5+ , Data.Vector.Generic.izipWith6+ , Data.Vector.Generic.zip+ , Data.Vector.Generic.zip3+ , Data.Vector.Generic.zip4+ , Data.Vector.Generic.zip5+ , Data.Vector.Generic.zip6++ -- ** Monadic zipping+ , Data.Vector.Generic.zipWithM+ , Data.Vector.Generic.izipWithM+ , Data.Vector.Generic.zipWithM_+ , Data.Vector.Generic.izipWithM_++ -- ** Unzipping+ , Data.Vector.Generic.unzip+ , Data.Vector.Generic.unzip3+ , Data.Vector.Generic.unzip4+ , Data.Vector.Generic.unzip5+ , Data.Vector.Generic.unzip6++ -- * Working with predicates+ -- ** Filtering+ , Data.Vector.Generic.filter+ , Data.Vector.Generic.ifilter+#if MIN_VERSION_vector(0,12,0)+ , Data.Vector.Generic.uniq+ , Data.Vector.Generic.mapMaybe+ , Data.Vector.Generic.imapMaybe+#endif+ , Data.Vector.Generic.filterM+ , Data.Vector.Generic.takeWhile+ , Data.Vector.Generic.dropWhile++ -- ** Partitioning+ , Data.Vector.Generic.partition+ , Data.Vector.Generic.unstablePartition+ , Data.Vector.Generic.span+ , Data.Vector.Generic.break++ -- ** Searching+ , Data.Vector.Generic.elem+ , Data.Vector.Generic.notElem+ , Data.Vector.Generic.find+ , Data.Vector.Generic.findIndex+ , Data.Vector.Generic.findIndices+ , Data.Vector.Generic.elemIndex+ , Data.Vector.Generic.elemIndices++ -- * Folding+ , Data.Vector.Generic.foldl+ , Data.Vector.Generic.foldl'+ , Data.Vector.Generic.foldr+ , Data.Vector.Generic.foldr'+ , Data.Vector.Generic.ifoldl+ , Data.Vector.Generic.ifoldl'+ , Data.Vector.Generic.ifoldr+ , Data.Vector.Generic.ifoldr'++ -- ** Specialised folds+ , Data.Vector.Generic.all+ , Data.Vector.Generic.any+ , Data.Vector.Generic.and+ , Data.Vector.Generic.or+ , Data.Vector.Generic.sum+ , Data.Vector.Generic.product++ -- ** Monadic folds+ , Data.Vector.Generic.foldM+ , Data.Vector.Generic.ifoldM+ , Data.Vector.Generic.foldM'+ , Data.Vector.Generic.ifoldM'+ , Data.Vector.Generic.foldM_+ , Data.Vector.Generic.ifoldM_+ , Data.Vector.Generic.foldM'_+ , Data.Vector.Generic.ifoldM'_++ -- ** Monadic sequencing+ , Data.Vector.Generic.sequence+ , Data.Vector.Generic.sequence_++ -- * Prefix sums (scans)+ , Data.Vector.Generic.prescanl+ , Data.Vector.Generic.prescanl'+ , Data.Vector.Generic.postscanl+ , Data.Vector.Generic.postscanl'+ , Data.Vector.Generic.scanl+ , Data.Vector.Generic.scanl'+#if MIN_VERSION_vector(0,12,0)+ , Data.Vector.Generic.iscanl+ , Data.Vector.Generic.iscanl'+#endif+ , Data.Vector.Generic.prescanr+ , Data.Vector.Generic.prescanr'+ , Data.Vector.Generic.postscanr+ , Data.Vector.Generic.postscanr'+ , Data.Vector.Generic.scanr+ , Data.Vector.Generic.scanr'+#if MIN_VERSION_vector(0,12,0)+ , Data.Vector.Generic.iscanr+ , Data.Vector.Generic.iscanr'+#endif++ -- * Conversions+ -- ** Lists+ , Data.Vector.Generic.toList+ , Data.Vector.Generic.fromList+ , Data.Vector.Generic.fromListN++ -- ** Different vector types+ , Data.Vector.Generic.convert++ -- ** Mutable vectors+ , Data.Vector.Generic.freeze+ , Data.Vector.Generic.thaw+ , Data.Vector.Generic.copy++ -- * Fusion support+ -- ** Conversion to/from Bundles+ , Data.Vector.Generic.stream+ , Data.Vector.Generic.unstream+ , Data.Vector.Generic.streamR+ , Data.Vector.Generic.unstreamR++ -- ** Recycling support+ , Data.Vector.Generic.new+ , Data.Vector.Generic.clone++ -- * Utilities+ -- ** Comparisons+ , Data.Vector.Generic.eq+ , Data.Vector.Generic.cmp+#if MIN_VERSION_vector(0,12,0)+ , Data.Vector.Generic.eqBy+ , Data.Vector.Generic.cmpBy+#endif++ -- ** Show and Read+ , Data.Vector.Generic.showsPrec+ , Data.Vector.Generic.readPrec+#if MIN_VERSION_vector(0,12,0)+ , Data.Vector.Generic.liftShowsPrec+ , Data.Vector.Generic.liftReadsPrec+#endif++ -- ** @Data@ and @Typeable@+ , Data.Vector.Generic.gfoldl+ , Data.Vector.Generic.dataCast+ , Data.Vector.Generic.mkType ) where -import Data.Vector.Generic+import qualified Data.Vector.Generic
src/RIO/Vector/Boxed.hs view
@@ -1,8 +1,220 @@+{-# LANGUAGE CPP #-} -- | Boxed @Vector@. Import as: ----- > import qualified RIO.Vector.Boxed as V.Boxed+-- > import qualified RIO.Vector.Boxed as VB module RIO.Vector.Boxed- ( module Data.Vector+ (+ -- * Boxed vectors+ Data.Vector.Vector+ , Data.Vector.MVector++ -- * Accessors+ -- ** Length information+ , Data.Vector.length+ , Data.Vector.null++ -- ** Indexing+ , (Data.Vector.!?)++ -- ** Extracting subvectors+ , Data.Vector.slice+ , Data.Vector.take+ , Data.Vector.drop+ , Data.Vector.splitAt++ -- * Construction+ -- ** Initialisation+ , Data.Vector.empty+ , Data.Vector.singleton+ , Data.Vector.replicate+ , Data.Vector.generate+ , Data.Vector.iterateN++ -- ** Monadic initialisation+ , Data.Vector.replicateM+ , Data.Vector.generateM+#if MIN_VERSION_vector(0,12,0)+ , Data.Vector.iterateNM+#endif+ , Data.Vector.create+#if MIN_VERSION_vector(0,12,0)+ , Data.Vector.createT+#endif++ -- ** Unfolding+ , Data.Vector.unfoldr+ , Data.Vector.unfoldrN+#if MIN_VERSION_vector(0,12,0)+ , Data.Vector.unfoldrM+ , Data.Vector.unfoldrNM+#endif+ , Data.Vector.constructN+ , Data.Vector.constructrN++ -- ** Enumeration+ , Data.Vector.enumFromN+ , Data.Vector.enumFromStepN+ , Data.Vector.enumFromTo+ , Data.Vector.enumFromThenTo++ -- ** Concatenation+ , Data.Vector.cons+ , Data.Vector.snoc+ , (Data.Vector.++)+ , Data.Vector.concat++ -- ** Restricting memory usage+ , Data.Vector.force++ -- * Modifying vectors+ -- ** Permutations+ , Data.Vector.reverse++ -- ** Safe destructive update+ , Data.Vector.modify++ -- * Elementwise operations+ -- ** Indexing+ , Data.Vector.indexed++ -- ** Mapping+ , Data.Vector.map+ , Data.Vector.imap+ , Data.Vector.concatMap++ -- ** Monadic mapping+ , Data.Vector.mapM+ , Data.Vector.imapM+ , Data.Vector.mapM_+ , Data.Vector.imapM_+ , Data.Vector.forM+ , Data.Vector.forM_++ -- ** Zipping+ , Data.Vector.zipWith+ , Data.Vector.zipWith3+ , Data.Vector.zipWith4+ , Data.Vector.zipWith5+ , Data.Vector.zipWith6+ , Data.Vector.izipWith+ , Data.Vector.izipWith3+ , Data.Vector.izipWith4+ , Data.Vector.izipWith5+ , Data.Vector.izipWith6+ , Data.Vector.zip+ , Data.Vector.zip3+ , Data.Vector.zip4+ , Data.Vector.zip5+ , Data.Vector.zip6++ -- ** Monadic zipping+ , Data.Vector.zipWithM+ , Data.Vector.izipWithM+ , Data.Vector.zipWithM_+ , Data.Vector.izipWithM_++ -- ** Unzipping+ , Data.Vector.unzip+ , Data.Vector.unzip3+ , Data.Vector.unzip4+ , Data.Vector.unzip5+ , Data.Vector.unzip6++ -- * Working with predicates+ -- ** Filtering+ , Data.Vector.filter+ , Data.Vector.ifilter+#if MIN_VERSION_vector(0,12,0)+ , Data.Vector.uniq+ , Data.Vector.mapMaybe+ , Data.Vector.imapMaybe+#endif+ , Data.Vector.filterM+ , Data.Vector.takeWhile+ , Data.Vector.dropWhile++ -- ** Partitioning+ , Data.Vector.partition+ , Data.Vector.unstablePartition+ , Data.Vector.span+ , Data.Vector.break++ -- ** Searching+ , Data.Vector.elem+ , Data.Vector.notElem+ , Data.Vector.find+ , Data.Vector.findIndex+ , Data.Vector.findIndices+ , Data.Vector.elemIndex+ , Data.Vector.elemIndices++ -- * Folding+ , Data.Vector.foldl+ , Data.Vector.foldl'+ , Data.Vector.foldr+ , Data.Vector.foldr'+ , Data.Vector.ifoldl+ , Data.Vector.ifoldl'+ , Data.Vector.ifoldr+ , Data.Vector.ifoldr'++ -- ** Specialised folds+ , Data.Vector.all+ , Data.Vector.any+ , Data.Vector.and+ , Data.Vector.or+ , Data.Vector.sum+ , Data.Vector.product++ -- ** Monadic folds+ , Data.Vector.foldM+ , Data.Vector.ifoldM+ , Data.Vector.foldM'+ , Data.Vector.ifoldM'+ , Data.Vector.foldM_+ , Data.Vector.ifoldM_+ , Data.Vector.foldM'_+ , Data.Vector.ifoldM'_++ -- ** Monadic sequencing+ , Data.Vector.sequence+ , Data.Vector.sequence_++ -- * Prefix sums (scans)+ , Data.Vector.prescanl+ , Data.Vector.prescanl'+ , Data.Vector.postscanl+ , Data.Vector.postscanl'+ , Data.Vector.scanl+ , Data.Vector.scanl'+#if MIN_VERSION_vector(0,12,0)+ , Data.Vector.iscanl+ , Data.Vector.iscanl'+#endif+ , Data.Vector.prescanr+ , Data.Vector.prescanr'+ , Data.Vector.postscanr+ , Data.Vector.postscanr'+ , Data.Vector.scanr+ , Data.Vector.scanr'+#if MIN_VERSION_vector(0,12,0)+ , Data.Vector.iscanr+ , Data.Vector.iscanr'+#endif++ -- * Conversions+ -- ** Lists+ , Data.Vector.toList+ , Data.Vector.fromList+ , Data.Vector.fromListN++ -- ** Different vector types+ , Data.Vector.convert++ -- ** Mutable vectors+ , Data.Vector.freeze+ , Data.Vector.thaw+ , Data.Vector.copy ) where -import Data.Vector+import qualified Data.Vector
+ src/RIO/Vector/Boxed/Partial.hs view
@@ -0,0 +1,61 @@+module RIO.Vector.Boxed.Partial+ (+ -- * Accessors+ -- ** Indexing+ (Data.Vector.!)+ , Data.Vector.head+ , Data.Vector.last++ -- ** Monadic indexing+ , Data.Vector.indexM+ , Data.Vector.headM+ , Data.Vector.lastM++ -- ** Extracting subvectors+ , Data.Vector.init+ , Data.Vector.tail++ -- * Modifying vectors+ -- ** Bulk updates+ , (Data.Vector.//)+ , Data.Vector.update+ , Data.Vector.update_++ -- ** Accumulations+ , Data.Vector.accum+ , Data.Vector.accumulate+ , Data.Vector.accumulate_++ -- ** Permutations+ , Data.Vector.backpermute++ -- * Folding+ , Data.Vector.foldl1+ , Data.Vector.foldl1'+ , Data.Vector.foldr1+ , Data.Vector.foldr1'++ -- ** Specialised folds+ , Data.Vector.maximum+ , Data.Vector.maximumBy+ , Data.Vector.minimum+ , Data.Vector.minimumBy+ , Data.Vector.minIndex+ , Data.Vector.minIndexBy+ , Data.Vector.maxIndex+ , Data.Vector.maxIndexBy++ -- ** Monadic folds+ , Data.Vector.fold1M+ , Data.Vector.fold1M'+ , Data.Vector.fold1M_+ , Data.Vector.fold1M'_++ -- * Prefix sums (scans)+ , Data.Vector.scanl1+ , Data.Vector.scanl1'+ , Data.Vector.scanr1+ , Data.Vector.scanr1'+ ) where++import qualified Data.Vector
+ src/RIO/Vector/Boxed/Unsafe.hs view
@@ -0,0 +1,42 @@+module RIO.Vector.Boxed.Unsafe+ (+ -- * Accessors+ -- ** Indexing+ Data.Vector.unsafeIndex+ , Data.Vector.unsafeHead+ , Data.Vector.unsafeLast++ -- ** Monadic indexing+ , Data.Vector.unsafeIndexM+ , Data.Vector.unsafeHeadM+ , Data.Vector.unsafeLastM++ -- ** Extracting subvectors+ , Data.Vector.unsafeSlice+ , Data.Vector.unsafeInit+ , Data.Vector.unsafeTail+ , Data.Vector.unsafeTake+ , Data.Vector.unsafeDrop++ -- * Modifying vectors+ -- ** Bulk updates+ , Data.Vector.unsafeUpd+ , Data.Vector.unsafeUpdate+ , Data.Vector.unsafeUpdate_++ -- ** Accumulations+ , Data.Vector.unsafeAccum+ , Data.Vector.unsafeAccumulate+ , Data.Vector.unsafeAccumulate_++ -- ** Permutations+ , Data.Vector.unsafeBackpermute++ -- * Conversions+ -- ** Mutable vectors+ , Data.Vector.unsafeFreeze+ , Data.Vector.unsafeThaw+ , Data.Vector.unsafeCopy+ ) where++import qualified Data.Vector
+ src/RIO/Vector/Partial.hs view
@@ -0,0 +1,61 @@+module RIO.Vector.Partial+ (+ -- * Accessors+ -- ** Indexing+ (Data.Vector.Generic.!)+ , Data.Vector.Generic.head+ , Data.Vector.Generic.last++ -- ** Monadic indexing+ , Data.Vector.Generic.indexM+ , Data.Vector.Generic.headM+ , Data.Vector.Generic.lastM++ -- ** Extracting subvectors+ , Data.Vector.Generic.init+ , Data.Vector.Generic.tail++ -- * Modifying vectors+ -- ** Bulk updates+ , (Data.Vector.Generic.//)+ , Data.Vector.Generic.update+ , Data.Vector.Generic.update_++ -- ** Accumulations+ , Data.Vector.Generic.accum+ , Data.Vector.Generic.accumulate+ , Data.Vector.Generic.accumulate_++ -- ** Permutations+ , Data.Vector.Generic.backpermute++ -- * Folding+ , Data.Vector.Generic.foldl1+ , Data.Vector.Generic.foldl1'+ , Data.Vector.Generic.foldr1+ , Data.Vector.Generic.foldr1'++ -- ** Specialised folds+ , Data.Vector.Generic.maximum+ , Data.Vector.Generic.maximumBy+ , Data.Vector.Generic.minimum+ , Data.Vector.Generic.minimumBy+ , Data.Vector.Generic.minIndex+ , Data.Vector.Generic.minIndexBy+ , Data.Vector.Generic.maxIndex+ , Data.Vector.Generic.maxIndexBy++ -- ** Monadic folds+ , Data.Vector.Generic.fold1M+ , Data.Vector.Generic.fold1M'+ , Data.Vector.Generic.fold1M_+ , Data.Vector.Generic.fold1M'_++ -- * Prefix sums (scans)+ , Data.Vector.Generic.scanl1+ , Data.Vector.Generic.scanl1'+ , Data.Vector.Generic.scanr1+ , Data.Vector.Generic.scanr1'+ ) where++import qualified Data.Vector.Generic
src/RIO/Vector/Storable.hs view
@@ -1,8 +1,186 @@+{-# LANGUAGE CPP #-} -- | Storable @Vector@. Import as: ----- > import qualified RIO.Vector.Storable as V.Storable+-- > import qualified RIO.Vector.Storable as VS module RIO.Vector.Storable- ( module Data.Vector.Storable+ (+ -- * Storable vectors+ Data.Vector.Storable.Vector+ , Data.Vector.Storable.MVector(..)+ , Data.Vector.Storable.Storable++ -- * Accessors+ -- ** Length information+ , Data.Vector.Storable.length+ , Data.Vector.Storable.null++ -- ** Indexing+ , (Data.Vector.Storable.!?)++ -- ** Extracting subvectors+ , Data.Vector.Storable.slice+ , Data.Vector.Storable.take+ , Data.Vector.Storable.drop+ , Data.Vector.Storable.splitAt++ -- * Construction+ -- ** Initialisation+ , Data.Vector.Storable.empty+ , Data.Vector.Storable.singleton+ , Data.Vector.Storable.replicate+ , Data.Vector.Storable.generate+ , Data.Vector.Storable.iterateN++ -- ** Monadic initialisation+ , Data.Vector.Storable.replicateM+ , Data.Vector.Storable.generateM+#if MIN_VERSION_vector(0,12,0)+ , Data.Vector.Storable.iterateNM+#endif+ , Data.Vector.Storable.create+#if MIN_VERSION_vector(0,12,0)+ , Data.Vector.Storable.createT+#endif++ -- ** Unfolding+ , Data.Vector.Storable.unfoldr+ , Data.Vector.Storable.unfoldrN+#if MIN_VERSION_vector(0,12,0)+ , Data.Vector.Storable.unfoldrM+ , Data.Vector.Storable.unfoldrNM+#endif+ , Data.Vector.Storable.constructN+ , Data.Vector.Storable.constructrN++ -- ** Enumeration+ , Data.Vector.Storable.enumFromN+ , Data.Vector.Storable.enumFromStepN+ , Data.Vector.Storable.enumFromTo+ , Data.Vector.Storable.enumFromThenTo++ -- ** Concatenation+ , Data.Vector.Storable.cons+ , Data.Vector.Storable.snoc+ , (Data.Vector.Storable.++)+ , Data.Vector.Storable.concat++ -- ** Restricting memory usage+ , Data.Vector.Storable.force++ -- * Modifying vectors+ -- ** Permutations+ , Data.Vector.Storable.reverse++ -- ** Safe destructive update+ , Data.Vector.Storable.modify++ -- * Elementwise operations+ -- ** Mapping+ , Data.Vector.Storable.map+ , Data.Vector.Storable.imap+ , Data.Vector.Storable.concatMap++ -- ** Monadic mapping+ , Data.Vector.Storable.mapM+ , Data.Vector.Storable.mapM_+ , Data.Vector.Storable.forM+ , Data.Vector.Storable.forM_++ -- ** Zipping+ , Data.Vector.Storable.zipWith+ , Data.Vector.Storable.zipWith3+ , Data.Vector.Storable.zipWith4+ , Data.Vector.Storable.zipWith5+ , Data.Vector.Storable.zipWith6+ , Data.Vector.Storable.izipWith+ , Data.Vector.Storable.izipWith3+ , Data.Vector.Storable.izipWith4+ , Data.Vector.Storable.izipWith5+ , Data.Vector.Storable.izipWith6++ -- ** Monadic zipping+ , Data.Vector.Storable.zipWithM+ , Data.Vector.Storable.zipWithM_++ -- * Working with predicates+ -- ** Filtering+ , Data.Vector.Storable.filter+ , Data.Vector.Storable.ifilter+#if MIN_VERSION_vector(0,12,0)+ , Data.Vector.Storable.uniq+ , Data.Vector.Storable.mapMaybe+ , Data.Vector.Storable.imapMaybe+#endif+ , Data.Vector.Storable.filterM+ , Data.Vector.Storable.takeWhile+ , Data.Vector.Storable.dropWhile++ -- ** Partitioning+ , Data.Vector.Storable.partition+ , Data.Vector.Storable.unstablePartition+ , Data.Vector.Storable.span+ , Data.Vector.Storable.break++ -- ** Searching+ , Data.Vector.Storable.elem+ , Data.Vector.Storable.notElem+ , Data.Vector.Storable.find+ , Data.Vector.Storable.findIndex+ , Data.Vector.Storable.findIndices+ , Data.Vector.Storable.elemIndex+ , Data.Vector.Storable.elemIndices++ -- * Folding+ , Data.Vector.Storable.foldl+ , Data.Vector.Storable.foldl'+ , Data.Vector.Storable.foldr+ , Data.Vector.Storable.foldr'+ , Data.Vector.Storable.ifoldl+ , Data.Vector.Storable.ifoldl'+ , Data.Vector.Storable.ifoldr+ , Data.Vector.Storable.ifoldr'++ -- ** Specialised folds+ , Data.Vector.Storable.all+ , Data.Vector.Storable.any+ , Data.Vector.Storable.and+ , Data.Vector.Storable.or+ , Data.Vector.Storable.sum+ , Data.Vector.Storable.product++ -- ** Monadic folds+ , Data.Vector.Storable.foldM+ , Data.Vector.Storable.foldM'+ , Data.Vector.Storable.foldM_+ , Data.Vector.Storable.foldM'_++ -- * Prefix sums (scans)+ , Data.Vector.Storable.prescanl+ , Data.Vector.Storable.prescanl'+ , Data.Vector.Storable.postscanl+ , Data.Vector.Storable.postscanl'+ , Data.Vector.Storable.scanl+ , Data.Vector.Storable.scanl'+ , Data.Vector.Storable.prescanr+ , Data.Vector.Storable.prescanr'+ , Data.Vector.Storable.postscanr+ , Data.Vector.Storable.postscanr'+ , Data.Vector.Storable.scanr+ , Data.Vector.Storable.scanr'++ -- * Conversions+ -- ** Lists+ , Data.Vector.Storable.toList+ , Data.Vector.Storable.fromList+ , Data.Vector.Storable.fromListN++ -- ** Different vector types+ , Data.Vector.Storable.convert++ -- ** Mutable vectors+ , Data.Vector.Storable.freeze+ , Data.Vector.Storable.thaw+ , Data.Vector.Storable.copy ) where -import Data.Vector.Storable+import qualified Data.Vector.Storable
+ src/RIO/Vector/Storable/Partial.hs view
@@ -0,0 +1,59 @@+module RIO.Vector.Storable.Partial+ (+ -- * Accessors+ -- ** Indexing+ (Data.Vector.Storable.!)+ , Data.Vector.Storable.head+ , Data.Vector.Storable.last++ -- ** Monadic indexing+ , Data.Vector.Storable.indexM+ , Data.Vector.Storable.headM+ , Data.Vector.Storable.lastM++ -- ** Extracting subvectors+ , Data.Vector.Storable.init+ , Data.Vector.Storable.tail++ -- * Modifying vectors+ -- ** Bulk updates+ , (Data.Vector.Storable.//)+ , Data.Vector.Storable.update_++ -- ** Accumulations+ , Data.Vector.Storable.accum+ , Data.Vector.Storable.accumulate_++ -- ** Permutations+ , Data.Vector.Storable.backpermute++ -- * Folding+ , Data.Vector.Storable.foldl1+ , Data.Vector.Storable.foldl1'+ , Data.Vector.Storable.foldr1+ , Data.Vector.Storable.foldr1'++ -- ** Specialised folds+ , Data.Vector.Storable.maximum+ , Data.Vector.Storable.maximumBy+ , Data.Vector.Storable.minimum+ , Data.Vector.Storable.minimumBy+ , Data.Vector.Storable.minIndex+ , Data.Vector.Storable.minIndexBy+ , Data.Vector.Storable.maxIndex+ , Data.Vector.Storable.maxIndexBy++ -- ** Monadic folds+ , Data.Vector.Storable.fold1M+ , Data.Vector.Storable.fold1M'+ , Data.Vector.Storable.fold1M_+ , Data.Vector.Storable.fold1M'_++ -- * Prefix sums (scans)+ , Data.Vector.Storable.scanl1+ , Data.Vector.Storable.scanl1'+ , Data.Vector.Storable.scanr1+ , Data.Vector.Storable.scanr1'+ ) where++import qualified Data.Vector.Storable
+ src/RIO/Vector/Storable/Unsafe.hs view
@@ -0,0 +1,54 @@+module RIO.Vector.Storable.Unsafe+ (+ -- * Accessors+ -- ** Indexing+ Data.Vector.Storable.unsafeIndex+ , Data.Vector.Storable.unsafeHead+ , Data.Vector.Storable.unsafeLast++ -- ** Monadic indexing+ , Data.Vector.Storable.unsafeIndexM+ , Data.Vector.Storable.unsafeHeadM+ , Data.Vector.Storable.unsafeLastM++ -- ** Extracting subvectors+ , Data.Vector.Storable.unsafeSlice+ , Data.Vector.Storable.unsafeInit+ , Data.Vector.Storable.unsafeTail+ , Data.Vector.Storable.unsafeTake+ , Data.Vector.Storable.unsafeDrop++ -- * Modifying vectors+ -- ** Bulk updates+ , Data.Vector.Storable.unsafeUpd+ , Data.Vector.Storable.unsafeUpdate_++ -- ** Accumulations+ , Data.Vector.Storable.unsafeAccum+ , Data.Vector.Storable.unsafeAccumulate_++ -- ** Permutations+ , Data.Vector.Storable.unsafeBackpermute++ -- * Conversions+ -- ** Mutable vectors+ , Data.Vector.Storable.unsafeFreeze+ , Data.Vector.Storable.unsafeThaw+ , Data.Vector.Storable.unsafeCopy++ -- * Raw pointers+ , Data.Vector.Storable.unsafeFromForeignPtr+ , Data.Vector.Storable.unsafeFromForeignPtr0+ , Data.Vector.Storable.unsafeToForeignPtr+ , Data.Vector.Storable.unsafeToForeignPtr0+ , unsafeWith+ ) where++import Data.Vector.Storable(Storable, Vector)+import qualified Data.Vector.Storable+import Foreign.Ptr(Ptr)+import UnliftIO++-- | Lifted version of 'Data.Vector.Storable.unsafeWith'+unsafeWith :: (MonadUnliftIO m, Storable a) => Vector a -> (Ptr a -> m b) -> m b+unsafeWith vec action = withRunInIO $ \unlifter -> Data.Vector.Storable.unsafeWith vec (unlifter . action)
src/RIO/Vector/Unboxed.hs view
@@ -1,8 +1,209 @@+{-# LANGUAGE CPP #-} -- | Unboxed @Vector@. Import as: ----- > import qualified RIO.Vector.Unboxed as V.Unboxed+-- > import qualified RIO.Vector.Unboxed as VU module RIO.Vector.Unboxed- ( module Data.Vector.Unboxed+ (+ -- * Unboxed vectors+ Data.Vector.Unboxed.Vector+ , Data.Vector.Unboxed.MVector(..)+ , Data.Vector.Unboxed.Unbox++ -- * Accessors+ -- ** Length information+ , Data.Vector.Unboxed.length+ , Data.Vector.Unboxed.null++ -- ** Indexing+ , (Data.Vector.Unboxed.!?)++ -- ** Extracting subvectors+ , Data.Vector.Unboxed.slice+ , Data.Vector.Unboxed.take+ , Data.Vector.Unboxed.drop+ , Data.Vector.Unboxed.splitAt++ -- * Construction+ -- ** Initialisation+ , Data.Vector.Unboxed.empty+ , Data.Vector.Unboxed.singleton+ , Data.Vector.Unboxed.replicate+ , Data.Vector.Unboxed.generate+ , Data.Vector.Unboxed.iterateN++ -- ** Monadic initialisation+ , Data.Vector.Unboxed.replicateM+ , Data.Vector.Unboxed.generateM+#if MIN_VERSION_vector(0,12,0)+ , Data.Vector.Unboxed.iterateNM+#endif+ , Data.Vector.Unboxed.create+#if MIN_VERSION_vector(0,12,0)+ , Data.Vector.Unboxed.createT+#endif++ -- ** Unfolding+ , Data.Vector.Unboxed.unfoldr+ , Data.Vector.Unboxed.unfoldrN+#if MIN_VERSION_vector(0,12,0)+ , Data.Vector.Unboxed.unfoldrM+ , Data.Vector.Unboxed.unfoldrNM+#endif+ , Data.Vector.Unboxed.constructN+ , Data.Vector.Unboxed.constructrN++ -- ** Enumeration+ , Data.Vector.Unboxed.enumFromN+ , Data.Vector.Unboxed.enumFromStepN+ , Data.Vector.Unboxed.enumFromTo+ , Data.Vector.Unboxed.enumFromThenTo++ -- ** Concatenation+ , Data.Vector.Unboxed.cons+ , Data.Vector.Unboxed.snoc+ , (Data.Vector.Unboxed.++)+ , Data.Vector.Unboxed.concat++ -- ** Restricting memory usage+ , Data.Vector.Unboxed.force++ -- * Modifying vectors+ -- ** Permutations+ , Data.Vector.Unboxed.reverse++ -- ** Safe destructive update+ , Data.Vector.Unboxed.modify++ -- * Elementwise operations+ -- ** Indexing+ , Data.Vector.Unboxed.indexed++ -- ** Mapping+ , Data.Vector.Unboxed.map+ , Data.Vector.Unboxed.imap+ , Data.Vector.Unboxed.concatMap++ -- ** Monadic mapping+ , Data.Vector.Unboxed.mapM+ , Data.Vector.Unboxed.imapM+ , Data.Vector.Unboxed.mapM_+ , Data.Vector.Unboxed.imapM_+ , Data.Vector.Unboxed.forM+ , Data.Vector.Unboxed.forM_++ -- ** Zipping+ , Data.Vector.Unboxed.zipWith+ , Data.Vector.Unboxed.zipWith3+ , Data.Vector.Unboxed.zipWith4+ , Data.Vector.Unboxed.zipWith5+ , Data.Vector.Unboxed.zipWith6+ , Data.Vector.Unboxed.izipWith+ , Data.Vector.Unboxed.izipWith3+ , Data.Vector.Unboxed.izipWith4+ , Data.Vector.Unboxed.izipWith5+ , Data.Vector.Unboxed.izipWith6+ , Data.Vector.Unboxed.zip+ , Data.Vector.Unboxed.zip3+ , Data.Vector.Unboxed.zip4+ , Data.Vector.Unboxed.zip5+ , Data.Vector.Unboxed.zip6++ -- ** Monadic zipping+ , Data.Vector.Unboxed.zipWithM+ , Data.Vector.Unboxed.izipWithM+ , Data.Vector.Unboxed.zipWithM_+ , Data.Vector.Unboxed.izipWithM_++ -- ** Unzipping+ , Data.Vector.Unboxed.unzip+ , Data.Vector.Unboxed.unzip3+ , Data.Vector.Unboxed.unzip4+ , Data.Vector.Unboxed.unzip5+ , Data.Vector.Unboxed.unzip6++ -- * Working with predicates+ -- ** Filtering+ , Data.Vector.Unboxed.filter+ , Data.Vector.Unboxed.ifilter+#if MIN_VERSION_vector(0,12,0)+ , Data.Vector.Unboxed.uniq+ , Data.Vector.Unboxed.mapMaybe+ , Data.Vector.Unboxed.imapMaybe+#endif+ , Data.Vector.Unboxed.filterM+ , Data.Vector.Unboxed.takeWhile+ , Data.Vector.Unboxed.dropWhile++ -- ** Partitioning+ , Data.Vector.Unboxed.partition+ , Data.Vector.Unboxed.unstablePartition+ , Data.Vector.Unboxed.span+ , Data.Vector.Unboxed.break++ -- ** Searching+ , Data.Vector.Unboxed.elem+ , Data.Vector.Unboxed.notElem+ , Data.Vector.Unboxed.find+ , Data.Vector.Unboxed.findIndex+ , Data.Vector.Unboxed.findIndices+ , Data.Vector.Unboxed.elemIndex+ , Data.Vector.Unboxed.elemIndices++ -- * Folding+ , Data.Vector.Unboxed.foldl+ , Data.Vector.Unboxed.foldl'+ , Data.Vector.Unboxed.foldr+ , Data.Vector.Unboxed.foldr'+ , Data.Vector.Unboxed.ifoldl+ , Data.Vector.Unboxed.ifoldl'+ , Data.Vector.Unboxed.ifoldr+ , Data.Vector.Unboxed.ifoldr'++ -- ** Specialised folds+ , Data.Vector.Unboxed.all+ , Data.Vector.Unboxed.any+ , Data.Vector.Unboxed.and+ , Data.Vector.Unboxed.or+ , Data.Vector.Unboxed.sum+ , Data.Vector.Unboxed.product++ -- ** Monadic folds+ , Data.Vector.Unboxed.foldM+ , Data.Vector.Unboxed.ifoldM+ , Data.Vector.Unboxed.foldM'+ , Data.Vector.Unboxed.ifoldM'+ , Data.Vector.Unboxed.foldM_+ , Data.Vector.Unboxed.ifoldM_+ , Data.Vector.Unboxed.foldM'_+ , Data.Vector.Unboxed.ifoldM'_++ -- * Prefix sums (scans)+ , Data.Vector.Unboxed.prescanl+ , Data.Vector.Unboxed.prescanl'+ , Data.Vector.Unboxed.postscanl+ , Data.Vector.Unboxed.postscanl'+ , Data.Vector.Unboxed.scanl+ , Data.Vector.Unboxed.scanl'+ , Data.Vector.Unboxed.prescanr+ , Data.Vector.Unboxed.prescanr'+ , Data.Vector.Unboxed.postscanr+ , Data.Vector.Unboxed.postscanr'+ , Data.Vector.Unboxed.scanr+ , Data.Vector.Unboxed.scanr'++ -- * Conversions+ -- ** Lists+ , Data.Vector.Unboxed.toList+ , Data.Vector.Unboxed.fromList+ , Data.Vector.Unboxed.fromListN++ -- ** Different vector types+ , Data.Vector.Unboxed.convert++ -- ** Mutable vectors+ , Data.Vector.Unboxed.freeze+ , Data.Vector.Unboxed.thaw+ , Data.Vector.Unboxed.copy ) where -import Data.Vector.Unboxed+import qualified Data.Vector.Unboxed
+ src/RIO/Vector/Unboxed/Partial.hs view
@@ -0,0 +1,61 @@+module RIO.Vector.Unboxed.Partial+ (+ -- * Accessors+ -- ** Indexing+ (Data.Vector.Unboxed.!)+ , Data.Vector.Unboxed.head+ , Data.Vector.Unboxed.last++ -- ** Monadic indexing+ , Data.Vector.Unboxed.indexM+ , Data.Vector.Unboxed.headM+ , Data.Vector.Unboxed.lastM++ -- ** Extracting subvectors+ , Data.Vector.Unboxed.init+ , Data.Vector.Unboxed.tail++ -- * Modifying vectors+ -- ** Bulk updates+ , (Data.Vector.Unboxed.//)+ , Data.Vector.Unboxed.update+ , Data.Vector.Unboxed.update_++ -- ** Accumulations+ , Data.Vector.Unboxed.accum+ , Data.Vector.Unboxed.accumulate+ , Data.Vector.Unboxed.accumulate_++ -- ** Permutations+ , Data.Vector.Unboxed.backpermute++ -- * Folding+ , Data.Vector.Unboxed.foldl1+ , Data.Vector.Unboxed.foldl1'+ , Data.Vector.Unboxed.foldr1+ , Data.Vector.Unboxed.foldr1'++ -- ** Specialised folds+ , Data.Vector.Unboxed.maximum+ , Data.Vector.Unboxed.maximumBy+ , Data.Vector.Unboxed.minimum+ , Data.Vector.Unboxed.minimumBy+ , Data.Vector.Unboxed.minIndex+ , Data.Vector.Unboxed.minIndexBy+ , Data.Vector.Unboxed.maxIndex+ , Data.Vector.Unboxed.maxIndexBy++ -- ** Monadic folds+ , Data.Vector.Unboxed.fold1M+ , Data.Vector.Unboxed.fold1M'+ , Data.Vector.Unboxed.fold1M_+ , Data.Vector.Unboxed.fold1M'_++ -- * Prefix sums (scans)+ , Data.Vector.Unboxed.scanl1+ , Data.Vector.Unboxed.scanl1'+ , Data.Vector.Unboxed.scanr1+ , Data.Vector.Unboxed.scanr1'+ ) where++import qualified Data.Vector.Unboxed
+ src/RIO/Vector/Unboxed/Unsafe.hs view
@@ -0,0 +1,42 @@+module RIO.Vector.Unboxed.Unsafe+ (+ -- * Accessors+ -- ** Indexing+ Data.Vector.Unboxed.unsafeIndex+ , Data.Vector.Unboxed.unsafeHead+ , Data.Vector.Unboxed.unsafeLast++ -- ** Monadic indexing+ , Data.Vector.Unboxed.unsafeIndexM+ , Data.Vector.Unboxed.unsafeHeadM+ , Data.Vector.Unboxed.unsafeLastM++ -- ** Extracting subvectors+ , Data.Vector.Unboxed.unsafeSlice+ , Data.Vector.Unboxed.unsafeInit+ , Data.Vector.Unboxed.unsafeTail+ , Data.Vector.Unboxed.unsafeTake+ , Data.Vector.Unboxed.unsafeDrop++ -- * Modifying vectors+ -- ** Bulk updates+ , Data.Vector.Unboxed.unsafeUpd+ , Data.Vector.Unboxed.unsafeUpdate+ , Data.Vector.Unboxed.unsafeUpdate_++ -- ** Accumulations+ , Data.Vector.Unboxed.unsafeAccum+ , Data.Vector.Unboxed.unsafeAccumulate+ , Data.Vector.Unboxed.unsafeAccumulate_++ -- ** Permutations+ , Data.Vector.Unboxed.unsafeBackpermute++ -- * Conversions+ -- ** Mutable vectors+ , Data.Vector.Unboxed.unsafeFreeze+ , Data.Vector.Unboxed.unsafeThaw+ , Data.Vector.Unboxed.unsafeCopy+ ) where++import qualified Data.Vector.Unboxed
+ src/RIO/Vector/Unsafe.hs view
@@ -0,0 +1,45 @@+module RIO.Vector.Unsafe+ (+ -- * Immutable vectors+ Data.Vector.Generic.Vector(..)++ -- * Accessors+ -- ** Indexing+ , Data.Vector.Generic.unsafeIndex+ , Data.Vector.Generic.unsafeHead+ , Data.Vector.Generic.unsafeLast++ -- ** Monadic indexing+ , Data.Vector.Generic.unsafeIndexM+ , Data.Vector.Generic.unsafeHeadM+ , Data.Vector.Generic.unsafeLastM++ -- ** Extracting subvectors+ , Data.Vector.Generic.unsafeSlice+ , Data.Vector.Generic.unsafeInit+ , Data.Vector.Generic.unsafeTail+ , Data.Vector.Generic.unsafeTake+ , Data.Vector.Generic.unsafeDrop++ -- * Modifying vectors+ -- ** Bulk updates+ , Data.Vector.Generic.unsafeUpd+ , Data.Vector.Generic.unsafeUpdate+ , Data.Vector.Generic.unsafeUpdate_++ -- ** Accumulations+ , Data.Vector.Generic.unsafeAccum+ , Data.Vector.Generic.unsafeAccumulate+ , Data.Vector.Generic.unsafeAccumulate_++ -- ** Permutations+ , Data.Vector.Generic.unsafeBackpermute++ -- * Conversions+ -- ** Mutable vectors+ , Data.Vector.Generic.unsafeFreeze+ , Data.Vector.Generic.unsafeThaw+ , Data.Vector.Generic.unsafeCopy+ ) where++import qualified Data.Vector.Generic
+ test/RIO/Prelude/IOSpec.hs view
@@ -0,0 +1,26 @@+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# LANGUAGE ViewPatterns #-}+module RIO.Prelude.IOSpec (spec) where++import RIO+import Test.Hspec+import Test.Hspec.QuickCheck+import qualified RIO.ByteString as B+import qualified RIO.Text as T++spec :: Spec+spec = do+ prop "binary file read/write" $ \(B.pack -> bs1) ->+ withSystemTempFile "binary-read-write" $ \fp h -> do+ hClose h+ writeFileBinary fp bs1+ bs2 <- readFileBinary fp+ bs2 `shouldBe` bs1+ -- filter our \r for Windows+ prop "text file read/write" $ \(T.pack . filter (/= '\r') -> text1) ->+ withSystemTempFile "binary-read-write" $ \fp h -> do+ hClose h+ writeFileUtf8 fp text1+ text2 <- readFileUtf8 fp+ text2 `shouldBe` text1
test/RIO/PreludeSpec.hs view
@@ -7,13 +7,32 @@ spec :: Spec spec = do- it "sanity" $ do- ref <- newURef (0 :: Int)- x <- readURef ref- x `shouldBe` 0- writeURef ref 1- y <- readURef ref- y `shouldBe` 1- modifyURef ref (+ 1)- z <- readURef ref- z `shouldBe` 2+ describe "URef" $ do+ it "sanity" $ do+ ref <- newURef (0 :: Int)+ x <- readURef ref+ x `shouldBe` 0+ writeURef ref 1+ y <- readURef ref+ y `shouldBe` 1+ modifyURef ref (+ 1)+ z <- readURef ref+ z `shouldBe` 2+ describe "whenM" $ do+ it "returns True" $ do+ ref <- newIORef False+ whenM (return True) (writeIORef ref True)+ readIORef ref `shouldReturn` True+ it "returns False" $ do+ ref <- newIORef False+ whenM (return False) (writeIORef ref True)+ readIORef ref `shouldReturn` False+ describe "unlessM" $ do+ it "returns True" $ do+ ref <- newIORef False+ unlessM (return True) (writeIORef ref True)+ readIORef ref `shouldReturn` False+ it "returns False" $ do+ ref <- newIORef False+ unlessM (return False) (writeIORef ref True)+ readIORef ref `shouldReturn` True