packages feed

biohazard 1.0.0 → 1.0.1

raw patch · 17 files changed

+328/−204 lines, 17 filesdep +semigroupsdep −binarydep −directorydep −filepathdep ~asyncdep ~basePVP: major bump suggested

API removals or changes: PVP suggests a major version bump

Dependencies added: semigroups

Dependencies removed: binary, directory, filepath, random, scientific

Dependency ranges changed: async, base

API changes (from Hackage documentation)

- Bio.Adna: instance (GHC.Read.Read (vec float), GHC.Read.Read float) => GHC.Read.Read (Bio.Adna.GenDamageParameters vec float)
- Bio.Adna: instance (GHC.Read.Read (vec float), GHC.Read.Read float) => GHC.Read.Read (Bio.Adna.NewDamageParameters vec float)
- Bio.Adna: instance (GHC.Show.Show (vec float), GHC.Show.Show float) => GHC.Show.Show (Bio.Adna.GenDamageParameters vec float)
- Bio.Adna: instance (GHC.Show.Show (vec float), GHC.Show.Show float) => GHC.Show.Show (Bio.Adna.NewDamageParameters vec float)
- Bio.Bam.Pileup: instance (GHC.Show.Show b, GHC.Show.Show a) => GHC.Show.Show (Bio.Bam.Pileup.Pile' a b)
- Bio.Iteratee.Base: instance Bio.Iteratee.Base.NullPoint (Data.Monoid.Endo a)
- Bio.Iteratee.Builder: instance Bio.Iteratee.Base.Nullable (Data.Monoid.Endo Bio.Iteratee.Builder.BgzfTokens)
- Bio.Iteratee.IO: enumFdCatch :: (IException e, MonadIO m) => Int -> Fd -> (e -> m (Maybe EnumException)) -> Enumerator Bytes m a
- Bio.Iteratee.Iteratee: instance Bio.Iteratee.Exception.IException Bio.Iteratee.Iteratee.NotAnException
- Bio.Iteratee.Iteratee: instance GHC.Exception.Exception Bio.Iteratee.Iteratee.NotAnException
- Bio.Iteratee.Iteratee: instance GHC.Show.Show Bio.Iteratee.Iteratee.NotAnException
- Bio.Prelude: instance (GHC.Arr.Ix b, GHC.Arr.Ix a) => GHC.Arr.Ix (Bio.Prelude.Pair a b)
- Bio.Prelude: instance (GHC.Classes.Eq b, GHC.Classes.Eq a) => GHC.Classes.Eq (Bio.Prelude.Pair a b)
- Bio.Prelude: instance (GHC.Classes.Ord b, GHC.Classes.Ord a) => GHC.Classes.Ord (Bio.Prelude.Pair a b)
- Bio.Prelude: instance (GHC.Enum.Bounded b, GHC.Enum.Bounded a) => GHC.Enum.Bounded (Bio.Prelude.Pair a b)
- Bio.Prelude: instance (GHC.Read.Read b, GHC.Read.Read a) => GHC.Read.Read (Bio.Prelude.Pair a b)
- Bio.Prelude: instance (GHC.Show.Show b, GHC.Show.Show a) => GHC.Show.Show (Bio.Prelude.Pair a b)
- Bio.Prelude: type :!: = Pair
+ Bio.Adna: instance (GHC.Read.Read float, GHC.Read.Read (vec float)) => GHC.Read.Read (Bio.Adna.GenDamageParameters vec float)
+ Bio.Adna: instance (GHC.Read.Read float, GHC.Read.Read (vec float)) => GHC.Read.Read (Bio.Adna.NewDamageParameters vec float)
+ Bio.Adna: instance (GHC.Show.Show float, GHC.Show.Show (vec float)) => GHC.Show.Show (Bio.Adna.GenDamageParameters vec float)
+ Bio.Adna: instance (GHC.Show.Show float, GHC.Show.Show (vec float)) => GHC.Show.Show (Bio.Adna.NewDamageParameters vec float)
+ Bio.Adna: instance GHC.Base.Semigroup a => GHC.Base.Semigroup (Bio.Adna.DmgStats a)
+ Bio.Bam.Header: instance GHC.Base.Semigroup Bio.Bam.Header.BamHeader
+ Bio.Bam.Header: instance GHC.Base.Semigroup Bio.Bam.Header.BamMeta
+ Bio.Bam.Pileup: instance (GHC.Show.Show a, GHC.Show.Show b) => GHC.Show.Show (Bio.Bam.Pileup.Pile' a b)
+ Bio.Bam.Pileup: instance GHC.Base.Semigroup Bio.Bam.Pileup.CallStats
+ Bio.Iteratee.Base: instance Bio.Iteratee.Base.NullPoint (Data.Semigroup.Internal.Endo a)
+ Bio.Iteratee.Base: instance GHC.Base.Semigroup c => GHC.Base.Semigroup (Bio.Iteratee.Base.Stream c)
+ Bio.Iteratee.Bgzf: instance GHC.Base.Semigroup Bio.Iteratee.Bgzf.Block
+ Bio.Iteratee.Builder: instance Bio.Iteratee.Base.Nullable (Data.Semigroup.Internal.Endo Bio.Iteratee.Builder.BgzfTokens)
+ Bio.Prelude: (!!) :: () => [a] -> Int -> a
+ Bio.Prelude: ($!) :: () => a -> b -> a -> b
+ Bio.Prelude: ($) :: () => a -> b -> a -> b
+ Bio.Prelude: ($>) :: Functor f => f a -> b -> f b
+ Bio.Prelude: (%) :: Integral a => a -> a -> Ratio a
+ Bio.Prelude: (&&&) :: Arrow a => a b c -> a b c' -> a b (c, c')
+ Bio.Prelude: (&&) :: Bool -> Bool -> Bool
+ Bio.Prelude: (&) :: () => a -> a -> b -> b
+ Bio.Prelude: (*) :: Num a => a -> a -> a
+ Bio.Prelude: (**) :: Floating a => a -> a -> a
+ Bio.Prelude: (***) :: Arrow a => a b c -> a b' c' -> a (b, b') (c, c')
+ Bio.Prelude: (*>) :: Applicative f => f a -> f b -> f b
+ Bio.Prelude: (+) :: Num a => a -> a -> a
+ Bio.Prelude: (++) :: () => [a] -> [a] -> [a]
+ Bio.Prelude: (+++) :: ArrowChoice a => a b c -> a b' c' -> a Either b b' Either c c'
+ Bio.Prelude: (-) :: Num a => a -> a -> a
+ Bio.Prelude: (.&.) :: Bits a => a -> a -> a
+ Bio.Prelude: (.) :: Category cat => cat b c -> cat a b -> cat a c
+ Bio.Prelude: (.|.) :: Bits a => a -> a -> a
+ Bio.Prelude: (/) :: Fractional a => a -> a -> a
+ Bio.Prelude: (/=) :: Eq a => a -> a -> Bool
+ Bio.Prelude: (:+) :: !a -> !a -> Complex a
+ Bio.Prelude: (:|) :: a -> [a] -> NonEmpty a
+ Bio.Prelude: (<$!>) :: Monad m => a -> b -> m a -> m b
+ Bio.Prelude: (<$) :: Functor f => a -> f b -> f a
+ Bio.Prelude: (<$>) :: Functor f => a -> b -> f a -> f b
+ Bio.Prelude: (<&>) :: Functor f => f a -> a -> b -> f b
+ Bio.Prelude: (<) :: Ord a => a -> a -> Bool
+ Bio.Prelude: (<*) :: Applicative f => f a -> f b -> f a
+ Bio.Prelude: (<**>) :: Applicative f => f a -> f a -> b -> f b
+ Bio.Prelude: (<*>) :: Applicative f => f a -> b -> f a -> f b
+ Bio.Prelude: (<+>) :: ArrowPlus a => a b c -> a b c -> a b c
+ Bio.Prelude: (<<<) :: Category cat => cat b c -> cat a b -> cat a c
+ Bio.Prelude: (<<^) :: Arrow a => a c d -> b -> c -> a b d
+ Bio.Prelude: (<=) :: Ord a => a -> a -> Bool
+ Bio.Prelude: (<=<) :: Monad m => b -> m c -> a -> m b -> a -> m c
+ Bio.Prelude: (<>) :: Semigroup a => a -> a -> a
+ Bio.Prelude: (<|>) :: Alternative f => f a -> f a -> f a
+ Bio.Prelude: (=<<) :: Monad m => a -> m b -> m a -> m b
+ Bio.Prelude: (==) :: Eq a => a -> a -> Bool
+ Bio.Prelude: (>) :: Ord a => a -> a -> Bool
+ Bio.Prelude: (>=) :: Ord a => a -> a -> Bool
+ Bio.Prelude: (>=>) :: Monad m => a -> m b -> b -> m c -> a -> m c
+ Bio.Prelude: (>>) :: Monad m => m a -> m b -> m b
+ Bio.Prelude: (>>=) :: Monad m => m a -> a -> m b -> m b
+ Bio.Prelude: (>>>) :: Category cat => cat a b -> cat b c -> cat a c
+ Bio.Prelude: (>>^) :: Arrow a => a b c -> c -> d -> a b d
+ Bio.Prelude: (\\) :: Eq a => [a] -> [a] -> [a]
+ Bio.Prelude: (^) :: (Num a, Integral b) => a -> b -> a
+ Bio.Prelude: (^<<) :: Arrow a => c -> d -> a b c -> a b d
+ Bio.Prelude: (^>>) :: Arrow a => b -> c -> a c d -> a b d
+ Bio.Prelude: (^^) :: (Fractional a, Integral b) => a -> b -> a
+ Bio.Prelude: (||) :: Bool -> Bool -> Bool
+ Bio.Prelude: (|||) :: ArrowChoice a => a b d -> a c d -> a Either b c d
+ Bio.Prelude: AlgConstr :: ConIndex -> ConstrRep
+ Bio.Prelude: AlgRep :: [Constr] -> DataRep
+ Bio.Prelude: All :: Bool -> All
+ Bio.Prelude: AllocationLimitExceeded :: AllocationLimitExceeded
+ Bio.Prelude: AlreadyExists :: IOErrorType
+ Bio.Prelude: Alt :: f a -> Alt
+ Bio.Prelude: Any :: Bool -> Any
+ Bio.Prelude: ArrowMonad :: a () b -> ArrowMonad b
+ Bio.Prelude: AssertionFailed :: String -> AssertionFailed
+ Bio.Prelude: BlockedIndefinitelyOnMVar :: BlockedIndefinitelyOnMVar
+ Bio.Prelude: BlockedIndefinitelyOnSTM :: BlockedIndefinitelyOnSTM
+ Bio.Prelude: BlockedOnBlackHole :: BlockReason
+ Bio.Prelude: BlockedOnException :: BlockReason
+ Bio.Prelude: BlockedOnForeignCall :: BlockReason
+ Bio.Prelude: BlockedOnMVar :: BlockReason
+ Bio.Prelude: BlockedOnOther :: BlockReason
+ Bio.Prelude: BlockedOnSTM :: BlockReason
+ Bio.Prelude: CharConstr :: Char -> ConstrRep
+ Bio.Prelude: CharRep :: DataRep
+ Bio.Prelude: ClosePunctuation :: GeneralCategory
+ Bio.Prelude: CompactionFailed :: String -> CompactionFailed
+ Bio.Prelude: ConnectorPunctuation :: GeneralCategory
+ Bio.Prelude: Const :: a -> Const a
+ Bio.Prelude: Control :: GeneralCategory
+ Bio.Prelude: CurrencySymbol :: GeneralCategory
+ Bio.Prelude: DashPunctuation :: GeneralCategory
+ Bio.Prelude: Deadlock :: Deadlock
+ Bio.Prelude: DecimalNumber :: GeneralCategory
+ Bio.Prelude: Denormal :: ArithException
+ Bio.Prelude: DivideByZero :: ArithException
+ Bio.Prelude: Down :: a -> Down a
+ Bio.Prelude: Dual :: a -> Dual a
+ Bio.Prelude: EQ :: Ordering
+ Bio.Prelude: EnclosingMark :: GeneralCategory
+ Bio.Prelude: Endo :: a -> a -> Endo a
+ Bio.Prelude: ErrorCallWithLocation :: String -> String -> ErrorCall
+ Bio.Prelude: ExitFailure :: Int -> ExitCode
+ Bio.Prelude: ExitSuccess :: ExitCode
+ Bio.Prelude: False :: Bool
+ Bio.Prelude: FinalQuote :: GeneralCategory
+ Bio.Prelude: First :: Maybe a -> First a
+ Bio.Prelude: FixIOException :: FixIOException
+ Bio.Prelude: FloatConstr :: Rational -> ConstrRep
+ Bio.Prelude: FloatRep :: DataRep
+ Bio.Prelude: Format :: GeneralCategory
+ Bio.Prelude: GT :: Ordering
+ Bio.Prelude: HardwareFault :: IOErrorType
+ Bio.Prelude: HeapOverflow :: AsyncException
+ Bio.Prelude: IOError :: Maybe Handle -> IOErrorType -> String -> String -> Maybe CInt -> Maybe FilePath -> IOException
+ Bio.Prelude: IllegalOperation :: IOErrorType
+ Bio.Prelude: InappropriateType :: IOErrorType
+ Bio.Prelude: IndexOutOfBounds :: String -> ArrayException
+ Bio.Prelude: Infix :: Fixity
+ Bio.Prelude: InitialQuote :: GeneralCategory
+ Bio.Prelude: IntConstr :: Integer -> ConstrRep
+ Bio.Prelude: IntPtr :: Int -> IntPtr
+ Bio.Prelude: IntRep :: DataRep
+ Bio.Prelude: Interrupted :: IOErrorType
+ Bio.Prelude: InvalidArgument :: IOErrorType
+ Bio.Prelude: Just :: a -> Maybe a
+ Bio.Prelude: Kleisli :: a -> m b -> Kleisli a b
+ Bio.Prelude: LT :: Ordering
+ Bio.Prelude: Last :: Maybe a -> Last a
+ Bio.Prelude: Left :: a -> Either a b
+ Bio.Prelude: LetterNumber :: GeneralCategory
+ Bio.Prelude: LineSeparator :: GeneralCategory
+ Bio.Prelude: LossOfPrecision :: ArithException
+ Bio.Prelude: LowercaseLetter :: GeneralCategory
+ Bio.Prelude: MaskedInterruptible :: MaskingState
+ Bio.Prelude: MaskedUninterruptible :: MaskingState
+ Bio.Prelude: MathSymbol :: GeneralCategory
+ Bio.Prelude: MkFixed :: Integer -> Fixed a
+ Bio.Prelude: ModifierLetter :: GeneralCategory
+ Bio.Prelude: ModifierSymbol :: GeneralCategory
+ Bio.Prelude: NestedAtomically :: NestedAtomically
+ Bio.Prelude: NoMethodError :: String -> NoMethodError
+ Bio.Prelude: NoRep :: DataRep
+ Bio.Prelude: NoSuchThing :: IOErrorType
+ Bio.Prelude: NonSpacingMark :: GeneralCategory
+ Bio.Prelude: NonTermination :: NonTermination
+ Bio.Prelude: NotAssigned :: GeneralCategory
+ Bio.Prelude: Nothing :: Maybe a
+ Bio.Prelude: OpenPunctuation :: GeneralCategory
+ Bio.Prelude: OtherError :: IOErrorType
+ Bio.Prelude: OtherLetter :: GeneralCategory
+ Bio.Prelude: OtherNumber :: GeneralCategory
+ Bio.Prelude: OtherPunctuation :: GeneralCategory
+ Bio.Prelude: OtherSymbol :: GeneralCategory
+ Bio.Prelude: Overflow :: ArithException
+ Bio.Prelude: ParagraphSeparator :: GeneralCategory
+ Bio.Prelude: PatternMatchFail :: String -> PatternMatchFail
+ Bio.Prelude: PermissionDenied :: IOErrorType
+ Bio.Prelude: Prefix :: Fixity
+ Bio.Prelude: PrivateUse :: GeneralCategory
+ Bio.Prelude: Product :: a -> Product a
+ Bio.Prelude: ProtocolError :: IOErrorType
+ Bio.Prelude: Proxy :: Proxy
+ Bio.Prelude: RatioZeroDenominator :: ArithException
+ Bio.Prelude: RecConError :: String -> RecConError
+ Bio.Prelude: RecSelError :: String -> RecSelError
+ Bio.Prelude: RecUpdError :: String -> RecUpdError
+ Bio.Prelude: ResourceBusy :: IOErrorType
+ Bio.Prelude: ResourceExhausted :: IOErrorType
+ Bio.Prelude: ResourceVanished :: IOErrorType
+ Bio.Prelude: Right :: b -> Either a b
+ Bio.Prelude: STM :: State# RealWorld -> (# State# RealWorld, a #) -> STM a
+ Bio.Prelude: Space :: GeneralCategory
+ Bio.Prelude: SpacingCombiningMark :: GeneralCategory
+ Bio.Prelude: StackOverflow :: AsyncException
+ Bio.Prelude: Sum :: a -> Sum a
+ Bio.Prelude: Surrogate :: GeneralCategory
+ Bio.Prelude: SystemError :: IOErrorType
+ Bio.Prelude: TVar :: TVar# RealWorld a -> TVar a
+ Bio.Prelude: ThreadBlocked :: BlockReason -> ThreadStatus
+ Bio.Prelude: ThreadDied :: ThreadStatus
+ Bio.Prelude: ThreadFinished :: ThreadStatus
+ Bio.Prelude: ThreadId :: ThreadId# -> ThreadId
+ Bio.Prelude: ThreadKilled :: AsyncException
+ Bio.Prelude: ThreadRunning :: ThreadStatus
+ Bio.Prelude: TimeExpired :: IOErrorType
+ Bio.Prelude: TitlecaseLetter :: GeneralCategory
+ Bio.Prelude: True :: Bool
+ Bio.Prelude: TypeError :: String -> TypeError
+ Bio.Prelude: UndefinedElement :: String -> ArrayException
+ Bio.Prelude: Underflow :: ArithException
+ Bio.Prelude: Unmasked :: MaskingState
+ Bio.Prelude: UnsatisfiedConstraints :: IOErrorType
+ Bio.Prelude: UnsupportedOperation :: IOErrorType
+ Bio.Prelude: UppercaseLetter :: GeneralCategory
+ Bio.Prelude: UserError :: IOErrorType
+ Bio.Prelude: UserInterrupt :: AsyncException
+ Bio.Prelude: Version :: [Int] -> [String] -> Version
+ Bio.Prelude: WordPtr :: Word -> WordPtr
+ Bio.Prelude: WrapArrow :: a b c -> WrappedArrow b c
+ Bio.Prelude: WrapMonad :: m a -> WrappedMonad a
+ Bio.Prelude: ZipList :: [a] -> ZipList a
+ Bio.Prelude: [Dynamic] :: Dynamic
+ Bio.Prelude: [HRefl] :: a :~~: a
+ Bio.Prelude: [Handler] :: Handler a
+ Bio.Prelude: [Refl] :: a :~: a
+ Bio.Prelude: [SomeAsyncException] :: SomeAsyncException
+ Bio.Prelude: [SomeException] :: SomeException
+ Bio.Prelude: [appEndo] :: Endo a -> a -> a
+ Bio.Prelude: [getAll] :: All -> Bool
+ Bio.Prelude: [getAlt] :: Alt -> f a
+ Bio.Prelude: [getAny] :: Any -> Bool
+ Bio.Prelude: [getConst] :: Const a -> a
+ Bio.Prelude: [getDual] :: Dual a -> a
+ Bio.Prelude: [getFirst] :: First a -> Maybe a
+ Bio.Prelude: [getLast] :: Last a -> Maybe a
+ Bio.Prelude: [getProduct] :: Product a -> a
+ Bio.Prelude: [getSum] :: Sum a -> a
+ Bio.Prelude: [getZipList] :: ZipList a -> [a]
+ Bio.Prelude: [ioe_description] :: IOException -> String
+ Bio.Prelude: [ioe_errno] :: IOException -> Maybe CInt
+ Bio.Prelude: [ioe_filename] :: IOException -> Maybe FilePath
+ Bio.Prelude: [ioe_handle] :: IOException -> Maybe Handle
+ Bio.Prelude: [ioe_location] :: IOException -> String
+ Bio.Prelude: [ioe_type] :: IOException -> IOErrorType
+ Bio.Prelude: [runKleisli] :: Kleisli a b -> a -> m b
+ Bio.Prelude: [unwrapArrow] :: WrappedArrow b c -> a b c
+ Bio.Prelude: [unwrapMonad] :: WrappedMonad a -> m a
+ Bio.Prelude: [versionBranch] :: Version -> [Int]
+ Bio.Prelude: [versionTags] :: Version -> [String]
+ Bio.Prelude: abs :: Num a => a -> a
+ Bio.Prelude: acos :: Floating a => a -> a
+ Bio.Prelude: acosh :: Floating a => a -> a
+ Bio.Prelude: addForeignPtrFinalizer :: () => FinalizerPtr a -> ForeignPtr a -> IO ()
+ Bio.Prelude: addForeignPtrFinalizerEnv :: () => FinalizerEnvPtr env a -> Ptr env -> ForeignPtr a -> IO ()
+ Bio.Prelude: addMVarFinalizer :: () => MVar a -> IO () -> IO ()
+ Bio.Prelude: alignPtr :: () => Ptr a -> Int -> Ptr a
+ Bio.Prelude: alignment :: Storable a => a -> Int
+ Bio.Prelude: all :: Foldable t => a -> Bool -> t a -> Bool
+ Bio.Prelude: allocationLimitExceeded :: SomeException
+ Bio.Prelude: allowInterrupt :: IO ()
+ Bio.Prelude: alreadyExistsErrorType :: IOErrorType
+ Bio.Prelude: alreadyInUseErrorType :: IOErrorType
+ Bio.Prelude: always :: STM Bool -> STM ()
+ Bio.Prelude: alwaysSucceeds :: () => STM a -> STM ()
+ Bio.Prelude: and :: Foldable t => t Bool -> Bool
+ Bio.Prelude: annotateIOError :: IOError -> String -> Maybe Handle -> Maybe FilePath -> IOError
+ Bio.Prelude: any :: Foldable t => a -> Bool -> t a -> Bool
+ Bio.Prelude: ap :: Monad m => m a -> b -> m a -> m b
+ Bio.Prelude: app :: ArrowApply a => a (a b c, b) c
+ Bio.Prelude: appendFile :: FilePath -> String -> IO ()
+ Bio.Prelude: approxRational :: RealFrac a => a -> a -> Rational
+ Bio.Prelude: arr :: Arrow a => b -> c -> a b c
+ Bio.Prelude: asTypeOf :: () => a -> a -> a
+ Bio.Prelude: asin :: Floating a => a -> a
+ Bio.Prelude: asinh :: Floating a => a -> a
+ Bio.Prelude: assert :: () => Bool -> a -> a
+ Bio.Prelude: assertError :: ?callStack :: CallStack => Bool -> a -> a
+ Bio.Prelude: asum :: (Foldable t, Alternative f) => t f a -> f a
+ Bio.Prelude: asyncExceptionFromException :: Exception e => SomeException -> Maybe e
+ Bio.Prelude: asyncExceptionToException :: Exception e => e -> SomeException
+ Bio.Prelude: atan :: Floating a => a -> a
+ Bio.Prelude: atan2 :: RealFloat a => a -> a -> a
+ Bio.Prelude: atanh :: Floating a => a -> a
+ Bio.Prelude: atomicModifyIORef :: () => IORef a -> a -> (a, b) -> IO b
+ Bio.Prelude: atomicModifyIORef' :: () => IORef a -> a -> (a, b) -> IO b
+ Bio.Prelude: atomicWriteIORef :: () => IORef a -> a -> IO ()
+ Bio.Prelude: atomically :: () => STM a -> IO a
+ Bio.Prelude: bimap :: Bifunctor p => a -> b -> c -> d -> p a c -> p b d
+ Bio.Prelude: bit :: Bits a => Int -> a
+ Bio.Prelude: bitDefault :: (Bits a, Num a) => Int -> a
+ Bio.Prelude: bitSize :: Bits a => a -> Int
+ Bio.Prelude: bitSizeMaybe :: Bits a => a -> Maybe Int
+ Bio.Prelude: blockedIndefinitelyOnMVar :: SomeException
+ Bio.Prelude: blockedIndefinitelyOnSTM :: SomeException
+ Bio.Prelude: bool :: () => a -> a -> Bool -> a
+ Bio.Prelude: bracket :: () => IO a -> a -> IO b -> a -> IO c -> IO c
+ Bio.Prelude: bracketOnError :: () => IO a -> a -> IO b -> a -> IO c -> IO c
+ Bio.Prelude: bracket_ :: () => IO a -> IO b -> IO c -> IO c
+ Bio.Prelude: break :: () => a -> Bool -> [a] -> ([a], [a])
+ Bio.Prelude: byteSwap16 :: Word16 -> Word16
+ Bio.Prelude: byteSwap32 :: Word32 -> Word32
+ Bio.Prelude: byteSwap64 :: Word64 -> Word64
+ Bio.Prelude: cannotCompactFunction :: SomeException
+ Bio.Prelude: cannotCompactMutable :: SomeException
+ Bio.Prelude: cannotCompactPinned :: SomeException
+ Bio.Prelude: cast :: (Typeable a, Typeable b) => a -> Maybe b
+ Bio.Prelude: castForeignPtr :: () => ForeignPtr a -> ForeignPtr b
+ Bio.Prelude: castFunPtr :: () => FunPtr a -> FunPtr b
+ Bio.Prelude: castFunPtrToPtr :: () => FunPtr a -> Ptr b
+ Bio.Prelude: castPtr :: () => Ptr a -> Ptr b
+ Bio.Prelude: castPtrToFunPtr :: () => Ptr a -> FunPtr b
+ Bio.Prelude: castPtrToStablePtr :: () => Ptr () -> StablePtr a
+ Bio.Prelude: castStablePtrToPtr :: () => StablePtr a -> Ptr ()
+ Bio.Prelude: catMaybes :: () => [Maybe a] -> [a]
+ Bio.Prelude: catch :: Exception e => IO a -> e -> IO a -> IO a
+ Bio.Prelude: catchIOError :: () => IO a -> IOError -> IO a -> IO a
+ Bio.Prelude: catchJust :: Exception e => e -> Maybe b -> IO a -> b -> IO a -> IO a
+ Bio.Prelude: catchSTM :: Exception e => STM a -> e -> STM a -> STM a
+ Bio.Prelude: catches :: () => IO a -> [Handler a] -> IO a
+ Bio.Prelude: ceiling :: (RealFrac a, Integral b) => a -> b
+ Bio.Prelude: childHandler :: SomeException -> IO ()
+ Bio.Prelude: chr :: Int -> Char
+ Bio.Prelude: cis :: Floating a => a -> Complex a
+ Bio.Prelude: class Applicative f => Alternative (f :: * -> *)
+ Bio.Prelude: class Functor f => Applicative (f :: * -> *)
+ Bio.Prelude: class Category a => Arrow (a :: * -> * -> *)
+ Bio.Prelude: class Arrow a => ArrowApply (a :: * -> * -> *)
+ Bio.Prelude: class Arrow a => ArrowChoice (a :: * -> * -> *)
+ Bio.Prelude: class Arrow a => ArrowLoop (a :: * -> * -> *)
+ Bio.Prelude: class ArrowZero a => ArrowPlus (a :: * -> * -> *)
+ Bio.Prelude: class Arrow a => ArrowZero (a :: * -> * -> *)
+ Bio.Prelude: class Bifunctor (p :: * -> * -> *)
+ Bio.Prelude: class Eq a => Bits a
+ Bio.Prelude: class Bounded a
+ Bio.Prelude: class Category (cat :: k -> k -> *)
+ Bio.Prelude: class Typeable a => Data a
+ Bio.Prelude: class Enum a
+ Bio.Prelude: class Eq a
+ Bio.Prelude: class (Typeable e, Show e) => Exception e
+ Bio.Prelude: class Bits b => FiniteBits b
+ Bio.Prelude: class Fractional a => Floating a
+ Bio.Prelude: class Foldable (t :: * -> *)
+ Bio.Prelude: class Num a => Fractional a
+ Bio.Prelude: class Functor (f :: * -> *)
+ Bio.Prelude: class Generic a
+ Bio.Prelude: class HasResolution a
+ Bio.Prelude: class (Real a, Enum a) => Integral a
+ Bio.Prelude: class IsString a
+ Bio.Prelude: class Ord a => Ix a
+ Bio.Prelude: class Applicative m => Monad (m :: * -> *)
+ Bio.Prelude: class Monad m => MonadFix (m :: * -> *)
+ Bio.Prelude: class (Alternative m, Monad m) => MonadPlus (m :: * -> *)
+ Bio.Prelude: class Semigroup a => Monoid a
+ Bio.Prelude: class Num a
+ Bio.Prelude: class Eq a => Ord a
+ Bio.Prelude: class Read a
+ Bio.Prelude: class (Num a, Ord a) => Real a
+ Bio.Prelude: class (RealFrac a, Floating a) => RealFloat a
+ Bio.Prelude: class (Real a, Fractional a) => RealFrac a
+ Bio.Prelude: class Semigroup a
+ Bio.Prelude: class Show a
+ Bio.Prelude: class Storable a
+ Bio.Prelude: class (Functor t, Foldable t) => Traversable (t :: * -> *)
+ Bio.Prelude: class Typeable (a :: k)
+ Bio.Prelude: clearBit :: Bits a => a -> Int -> a
+ Bio.Prelude: closeFdWith :: Fd -> IO () -> Fd -> IO ()
+ Bio.Prelude: compare :: Ord a => a -> a -> Ordering
+ Bio.Prelude: comparing :: Ord a => b -> a -> b -> b -> Ordering
+ Bio.Prelude: complement :: Bits a => a -> a
+ Bio.Prelude: complementBit :: Bits a => a -> Int -> a
+ Bio.Prelude: concat :: Foldable t => t [a] -> [a]
+ Bio.Prelude: concatMap :: Foldable t => a -> [b] -> t a -> [b]
+ Bio.Prelude: conjugate :: Num a => Complex a -> Complex a
+ Bio.Prelude: const :: () => a -> b -> a
+ Bio.Prelude: constrFields :: Constr -> [String]
+ Bio.Prelude: constrFixity :: Constr -> Fixity
+ Bio.Prelude: constrIndex :: Constr -> ConIndex
+ Bio.Prelude: constrRep :: Constr -> ConstrRep
+ Bio.Prelude: constrType :: Constr -> DataType
+ Bio.Prelude: cos :: Floating a => a -> a
+ Bio.Prelude: cosh :: Floating a => a -> a
+ Bio.Prelude: countLeadingZeros :: FiniteBits b => b -> Int
+ Bio.Prelude: countTrailingZeros :: FiniteBits b => b -> Int
+ Bio.Prelude: curry :: () => (a, b) -> c -> a -> b -> c
+ Bio.Prelude: cycle :: () => [a] -> [a]
+ Bio.Prelude: data AllocationLimitExceeded
+ Bio.Prelude: data ArithException
+ Bio.Prelude: data ArrayException
+ Bio.Prelude: data AsyncException
+ Bio.Prelude: data BlockReason
+ Bio.Prelude: data BlockedIndefinitelyOnMVar
+ Bio.Prelude: data BlockedIndefinitelyOnSTM
+ Bio.Prelude: data Bool
+ Bio.Prelude: data Chan a
+ Bio.Prelude: data Char
+ Bio.Prelude: data Complex a
+ Bio.Prelude: data Constr
+ Bio.Prelude: data ConstrRep
+ Bio.Prelude: data DataRep
+ Bio.Prelude: data DataType
+ Bio.Prelude: data Deadlock
+ Bio.Prelude: data Double
+ Bio.Prelude: data Dynamic
+ Bio.Prelude: data E0
+ Bio.Prelude: data E1
+ Bio.Prelude: data E12
+ Bio.Prelude: data E2
+ Bio.Prelude: data E3
+ Bio.Prelude: data E6
+ Bio.Prelude: data E9
+ Bio.Prelude: data Either a b
+ Bio.Prelude: data ErrorCall
+ Bio.Prelude: data ExitCode
+ Bio.Prelude: data FixIOException
+ Bio.Prelude: data Fixity
+ Bio.Prelude: data Float
+ Bio.Prelude: data ForeignPtr a
+ Bio.Prelude: data FunPtr a
+ Bio.Prelude: data GeneralCategory
+ Bio.Prelude: data Handle
+ Bio.Prelude: data Handler a
+ Bio.Prelude: data IO a
+ Bio.Prelude: data IOErrorType
+ Bio.Prelude: data IOException
+ Bio.Prelude: data IORef a
+ Bio.Prelude: data Int
+ Bio.Prelude: data Int16
+ Bio.Prelude: data Int32
+ Bio.Prelude: data Int64
+ Bio.Prelude: data Int8
+ Bio.Prelude: data Integer
+ Bio.Prelude: data MVar a
+ Bio.Prelude: data MaskingState
+ Bio.Prelude: data Maybe a
+ Bio.Prelude: data NestedAtomically
+ Bio.Prelude: data NonEmpty a
+ Bio.Prelude: data NonTermination
+ Bio.Prelude: data Ordering
+ Bio.Prelude: data PrimMVar
+ Bio.Prelude: data Ptr a
+ Bio.Prelude: data QSem
+ Bio.Prelude: data QSemN
+ Bio.Prelude: data Ratio a
+ Bio.Prelude: data ReadP a
+ Bio.Prelude: data ReadPrec a
+ Bio.Prelude: data RealWorld
+ Bio.Prelude: data ST s a
+ Bio.Prelude: data STRef s a
+ Bio.Prelude: data SomeAsyncException
+ Bio.Prelude: data SomeException
+ Bio.Prelude: data StableName a
+ Bio.Prelude: data StablePtr a
+ Bio.Prelude: data TVar a
+ Bio.Prelude: data ThreadId
+ Bio.Prelude: data ThreadStatus
+ Bio.Prelude: data TyCon
+ Bio.Prelude: data Unique
+ Bio.Prelude: data Version
+ Bio.Prelude: data Word
+ Bio.Prelude: data Word16
+ Bio.Prelude: data Word32
+ Bio.Prelude: data Word64
+ Bio.Prelude: data Word8
+ Bio.Prelude: data (:~:) (a :: k) (b :: k) :: forall k. () => k -> k -> *
+ Bio.Prelude: data (:~~:) (a :: k1) (b :: k2) :: forall k1 k2. () => k1 -> k2 -> *
+ Bio.Prelude: dataCast1 :: (Data a, Typeable t) => forall d. Data d => c t d -> Maybe c a
+ Bio.Prelude: dataCast2 :: (Data a, Typeable t) => forall d e. (Data d, Data e) => c t d e -> Maybe c a
+ Bio.Prelude: dataTypeConstrs :: DataType -> [Constr]
+ Bio.Prelude: dataTypeName :: DataType -> String
+ Bio.Prelude: dataTypeOf :: Data a => a -> DataType
+ Bio.Prelude: dataTypeRep :: DataType -> DataRep
+ Bio.Prelude: deRefStablePtr :: () => StablePtr a -> IO a
+ Bio.Prelude: decodeFloat :: RealFloat a => a -> (Integer, Int)
+ Bio.Prelude: delete :: Eq a => a -> [a] -> [a]
+ Bio.Prelude: deleteBy :: () => a -> a -> Bool -> a -> [a] -> [a]
+ Bio.Prelude: deleteFirstsBy :: () => a -> a -> Bool -> [a] -> [a] -> [a]
+ Bio.Prelude: denominator :: () => Ratio a -> a
+ Bio.Prelude: die :: () => String -> IO a
+ Bio.Prelude: digitToInt :: Char -> Int
+ Bio.Prelude: disableAllocationLimit :: IO ()
+ Bio.Prelude: displayException :: Exception e => e -> String
+ Bio.Prelude: div :: Integral a => a -> a -> a
+ Bio.Prelude: div' :: (Real a, Integral b) => a -> a -> b
+ Bio.Prelude: divMod :: Integral a => a -> a -> (a, a)
+ Bio.Prelude: divMod' :: (Real a, Integral b) => a -> a -> (b, a)
+ Bio.Prelude: doesNotExistErrorType :: IOErrorType
+ Bio.Prelude: drop :: () => Int -> [a] -> [a]
+ Bio.Prelude: dropWhile :: () => a -> Bool -> [a] -> [a]
+ Bio.Prelude: dropWhileEnd :: () => a -> Bool -> [a] -> [a]
+ Bio.Prelude: dupChan :: () => Chan a -> IO Chan a
+ Bio.Prelude: dynApp :: Dynamic -> Dynamic -> Dynamic
+ Bio.Prelude: dynApply :: Dynamic -> Dynamic -> Maybe Dynamic
+ Bio.Prelude: dynTypeRep :: Dynamic -> SomeTypeRep
+ Bio.Prelude: either :: () => a -> c -> b -> c -> Either a b -> c
+ Bio.Prelude: elem :: (Foldable t, Eq a) => a -> t a -> Bool
+ Bio.Prelude: elemIndex :: Eq a => a -> [a] -> Maybe Int
+ Bio.Prelude: elemIndices :: Eq a => a -> [a] -> [Int]
+ Bio.Prelude: empty :: Alternative f => f a
+ Bio.Prelude: enableAllocationLimit :: IO ()
+ Bio.Prelude: encodeFloat :: RealFloat a => Integer -> Int -> a
+ Bio.Prelude: ensureIOManagerIsRunning :: IO ()
+ Bio.Prelude: enumFrom :: Enum a => a -> [a]
+ Bio.Prelude: enumFromThen :: Enum a => a -> a -> [a]
+ Bio.Prelude: enumFromThenTo :: Enum a => a -> a -> a -> [a]
+ Bio.Prelude: enumFromTo :: Enum a => a -> a -> [a]
+ Bio.Prelude: eofErrorType :: IOErrorType
+ Bio.Prelude: eqStableName :: () => StableName a -> StableName b -> Bool
+ Bio.Prelude: eqT :: (Typeable a, Typeable b) => Maybe a :~: b
+ Bio.Prelude: error :: HasCallStack => [Char] -> a
+ Bio.Prelude: errorWithoutStackTrace :: () => [Char] -> a
+ Bio.Prelude: evaluate :: () => a -> IO a
+ Bio.Prelude: even :: Integral a => a -> Bool
+ Bio.Prelude: exitFailure :: () => IO a
+ Bio.Prelude: exitSuccess :: () => IO a
+ Bio.Prelude: exitWith :: () => ExitCode -> IO a
+ Bio.Prelude: exp :: Floating a => a -> a
+ Bio.Prelude: exponent :: RealFloat a => a -> Int
+ Bio.Prelude: fail :: Monad m => String -> m a
+ Bio.Prelude: fdGet :: Int -> Fd -> IO Bytes
+ Bio.Prelude: filter :: () => a -> Bool -> [a] -> [a]
+ Bio.Prelude: filterM :: Applicative m => a -> m Bool -> [a] -> m [a]
+ Bio.Prelude: finalizeForeignPtr :: () => ForeignPtr a -> IO ()
+ Bio.Prelude: finally :: () => IO a -> IO b -> IO a
+ Bio.Prelude: find :: Foldable t => a -> Bool -> t a -> Maybe a
+ Bio.Prelude: findIndex :: () => a -> Bool -> [a] -> Maybe Int
+ Bio.Prelude: findIndices :: () => a -> Bool -> [a] -> [Int]
+ Bio.Prelude: finiteBitSize :: FiniteBits b => b -> Int
+ Bio.Prelude: first :: Bifunctor p => a -> b -> p a c -> p b c
+ Bio.Prelude: fix :: () => a -> a -> a
+ Bio.Prelude: fixST :: () => a -> ST s a -> ST s a
+ Bio.Prelude: flip :: () => a -> b -> c -> b -> a -> c
+ Bio.Prelude: floatDigits :: RealFloat a => a -> Int
+ Bio.Prelude: floatRadix :: RealFloat a => a -> Integer
+ Bio.Prelude: floatRange :: RealFloat a => a -> (Int, Int)
+ Bio.Prelude: floatToDigits :: RealFloat a => Integer -> a -> ([Int], Int)
+ Bio.Prelude: floor :: (RealFrac a, Integral b) => a -> b
+ Bio.Prelude: fmap :: Functor f => a -> b -> f a -> f b
+ Bio.Prelude: fmapDefault :: Traversable t => a -> b -> t a -> t b
+ Bio.Prelude: fold :: (Foldable t, Monoid m) => t m -> m
+ Bio.Prelude: foldM :: (Foldable t, Monad m) => b -> a -> m b -> b -> t a -> m b
+ Bio.Prelude: foldM_ :: (Foldable t, Monad m) => b -> a -> m b -> b -> t a -> m ()
+ Bio.Prelude: foldMap :: (Foldable t, Monoid m) => a -> m -> t a -> m
+ Bio.Prelude: foldMapDefault :: (Traversable t, Monoid m) => a -> m -> t a -> m
+ Bio.Prelude: foldl :: Foldable t => b -> a -> b -> b -> t a -> b
+ Bio.Prelude: foldl' :: Foldable t => b -> a -> b -> b -> t a -> b
+ Bio.Prelude: foldl1 :: Foldable t => a -> a -> a -> t a -> a
+ Bio.Prelude: foldl1' :: () => a -> a -> a -> [a] -> a
+ Bio.Prelude: foldlM :: (Foldable t, Monad m) => b -> a -> m b -> b -> t a -> m b
+ Bio.Prelude: foldr :: Foldable t => a -> b -> b -> b -> t a -> b
+ Bio.Prelude: foldr' :: Foldable t => a -> b -> b -> b -> t a -> b
+ Bio.Prelude: foldr1 :: Foldable t => a -> a -> a -> t a -> a
+ Bio.Prelude: foldrM :: (Foldable t, Monad m) => a -> b -> m b -> b -> t a -> m b
+ Bio.Prelude: for :: (Traversable t, Applicative f) => t a -> a -> f b -> f t b
+ Bio.Prelude: forM :: (Traversable t, Monad m) => t a -> a -> m b -> m t b
+ Bio.Prelude: forM_ :: (Foldable t, Monad m) => t a -> a -> m b -> m ()
+ Bio.Prelude: for_ :: (Foldable t, Applicative f) => t a -> a -> f b -> f ()
+ Bio.Prelude: forever :: Applicative f => f a -> f b
+ Bio.Prelude: forkFinally :: () => IO a -> Either SomeException a -> IO () -> IO ThreadId
+ Bio.Prelude: forkIO :: IO () -> IO ThreadId
+ Bio.Prelude: forkIOWithUnmask :: forall a. () => IO a -> IO a -> IO () -> IO ThreadId
+ Bio.Prelude: forkOS :: IO () -> IO ThreadId
+ Bio.Prelude: forkOSWithUnmask :: forall a. () => IO a -> IO a -> IO () -> IO ThreadId
+ Bio.Prelude: forkOn :: Int -> IO () -> IO ThreadId
+ Bio.Prelude: forkOnWithUnmask :: Int -> forall a. () => IO a -> IO a -> IO () -> IO ThreadId
+ Bio.Prelude: freeHaskellFunPtr :: () => FunPtr a -> IO ()
+ Bio.Prelude: freeStablePtr :: () => StablePtr a -> IO ()
+ Bio.Prelude: fromConstr :: Data a => Constr -> a
+ Bio.Prelude: fromConstrB :: Data a => forall d. Data d => d -> Constr -> a
+ Bio.Prelude: fromConstrM :: (Monad m, Data a) => forall d. Data d => m d -> Constr -> m a
+ Bio.Prelude: fromDyn :: Typeable a => Dynamic -> a -> a
+ Bio.Prelude: fromDynamic :: Typeable a => Dynamic -> Maybe a
+ Bio.Prelude: fromEnum :: Enum a => a -> Int
+ Bio.Prelude: fromException :: Exception e => SomeException -> Maybe e
+ Bio.Prelude: fromInteger :: Num a => Integer -> a
+ Bio.Prelude: fromIntegral :: (Integral a, Num b) => a -> b
+ Bio.Prelude: fromJust :: () => Maybe a -> a
+ Bio.Prelude: fromLeft :: () => a -> Either a b -> a
+ Bio.Prelude: fromMaybe :: () => a -> Maybe a -> a
+ Bio.Prelude: fromRat :: RealFloat a => Rational -> a
+ Bio.Prelude: fromRational :: Fractional a => Rational -> a
+ Bio.Prelude: fromRight :: () => b -> Either a b -> b
+ Bio.Prelude: fromString :: IsString a => String -> a
+ Bio.Prelude: fst :: () => (a, b) -> a
+ Bio.Prelude: fullErrorType :: IOErrorType
+ Bio.Prelude: funResultTy :: TypeRep -> TypeRep -> Maybe TypeRep
+ Bio.Prelude: gcast :: (Typeable a, Typeable b) => c a -> Maybe c b
+ Bio.Prelude: gcast1 :: (Typeable t, Typeable t') => c t a -> Maybe c t' a
+ Bio.Prelude: gcast2 :: (Typeable t, Typeable t') => c t a b -> Maybe c t' a b
+ Bio.Prelude: gcd :: Integral a => a -> a -> a
+ Bio.Prelude: generalCategory :: Char -> GeneralCategory
+ Bio.Prelude: genericDrop :: Integral i => i -> [a] -> [a]
+ Bio.Prelude: genericIndex :: Integral i => [a] -> i -> a
+ Bio.Prelude: genericLength :: Num i => [a] -> i
+ Bio.Prelude: genericReplicate :: Integral i => i -> a -> [a]
+ Bio.Prelude: genericSplitAt :: Integral i => i -> [a] -> ([a], [a])
+ Bio.Prelude: genericTake :: Integral i => i -> [a] -> [a]
+ Bio.Prelude: getAllocationCounter :: IO Int64
+ Bio.Prelude: getArgs :: IO [String]
+ Bio.Prelude: getChanContents :: () => Chan a -> IO [a]
+ Bio.Prelude: getChar :: IO Char
+ Bio.Prelude: getContents :: IO String
+ Bio.Prelude: getEnv :: String -> IO String
+ Bio.Prelude: getEnvironment :: IO [(String, String)]
+ Bio.Prelude: getExecutablePath :: IO FilePath
+ Bio.Prelude: getLine :: IO String
+ Bio.Prelude: getMaskingState :: IO MaskingState
+ Bio.Prelude: getNumCapabilities :: IO Int
+ Bio.Prelude: getNumProcessors :: IO Int
+ Bio.Prelude: getProgName :: IO String
+ Bio.Prelude: getUncaughtExceptionHandler :: IO SomeException -> IO ()
+ Bio.Prelude: gfoldl :: Data a => forall d b. Data d => c d -> b -> d -> c b -> forall g. () => g -> c g -> a -> c a
+ Bio.Prelude: gmapM :: (Data a, Monad m) => forall d. Data d => d -> m d -> a -> m a
+ Bio.Prelude: gmapMo :: (Data a, MonadPlus m) => forall d. Data d => d -> m d -> a -> m a
+ Bio.Prelude: gmapMp :: (Data a, MonadPlus m) => forall d. Data d => d -> m d -> a -> m a
+ Bio.Prelude: gmapQ :: Data a => forall d. Data d => d -> u -> a -> [u]
+ Bio.Prelude: gmapQi :: Data a => Int -> forall d. Data d => d -> u -> a -> u
+ Bio.Prelude: gmapQl :: Data a => r -> r' -> r -> r -> forall d. Data d => d -> r' -> a -> r
+ Bio.Prelude: gmapQr :: Data a => r' -> r -> r -> r -> forall d. Data d => d -> r' -> a -> r
+ Bio.Prelude: gmapT :: Data a => forall b. Data b => b -> b -> a -> a
+ Bio.Prelude: group :: Eq a => [a] -> [[a]]
+ Bio.Prelude: groupBy :: () => a -> a -> Bool -> [a] -> [[a]]
+ Bio.Prelude: groupWith :: Ord b => a -> b -> [a] -> [[a]]
+ Bio.Prelude: guard :: Alternative f => Bool -> f ()
+ Bio.Prelude: gunfold :: Data a => forall b r. Data b => c b -> r -> c r -> forall r. () => r -> c r -> Constr -> c a
+ Bio.Prelude: hClose :: Handle -> IO ()
+ Bio.Prelude: hPrint :: Show a => Handle -> a -> IO ()
+ Bio.Prelude: hPrintf :: HPrintfType r => Handle -> String -> r
+ Bio.Prelude: hPutStr :: Handle -> String -> IO ()
+ Bio.Prelude: hPutStrLn :: Handle -> String -> IO ()
+ Bio.Prelude: handle :: Exception e => e -> IO a -> IO a -> IO a
+ Bio.Prelude: handleJust :: Exception e => e -> Maybe b -> b -> IO a -> IO a -> IO a
+ Bio.Prelude: hashStableName :: () => StableName a -> Int
+ Bio.Prelude: hashUnique :: Unique -> Int
+ Bio.Prelude: head :: () => [a] -> a
+ Bio.Prelude: heapOverflow :: SomeException
+ Bio.Prelude: id :: Category cat => cat a a
+ Bio.Prelude: illegalOperationErrorType :: IOErrorType
+ Bio.Prelude: imagPart :: () => Complex a -> a
+ Bio.Prelude: inRange :: Ix a => (a, a) -> a -> Bool
+ Bio.Prelude: index :: Ix a => (a, a) -> a -> Int
+ Bio.Prelude: indexConstr :: DataType -> ConIndex -> Constr
+ Bio.Prelude: infix 4 `notElem`
+ Bio.Prelude: infix 5 \\
+ Bio.Prelude: infixl 0 `on`
+ Bio.Prelude: infixl 1 <&>
+ Bio.Prelude: infixl 4 <**>
+ Bio.Prelude: infixl 7 %
+ Bio.Prelude: infixl 9 !!
+ Bio.Prelude: infixr 0 $!
+ Bio.Prelude: infixr 1 =<<
+ Bio.Prelude: infixr 2 ||
+ Bio.Prelude: infixr 3 &&
+ Bio.Prelude: infixr 5 ++
+ Bio.Prelude: infixr 8 ^
+ Bio.Prelude: init :: () => [a] -> [a]
+ Bio.Prelude: inits :: () => [a] -> [[a]]
+ Bio.Prelude: inline :: () => a -> a
+ Bio.Prelude: insert :: Ord a => a -> [a] -> [a]
+ Bio.Prelude: insertBy :: () => a -> a -> Ordering -> a -> [a] -> [a]
+ Bio.Prelude: instance (GHC.Arr.Ix a, GHC.Arr.Ix b) => GHC.Arr.Ix (Bio.Prelude.Pair a b)
+ Bio.Prelude: instance (GHC.Classes.Eq a, GHC.Classes.Eq b) => GHC.Classes.Eq (Bio.Prelude.Pair a b)
+ Bio.Prelude: instance (GHC.Classes.Ord a, GHC.Classes.Ord b) => GHC.Classes.Ord (Bio.Prelude.Pair a b)
+ Bio.Prelude: instance (GHC.Enum.Bounded a, GHC.Enum.Bounded b) => GHC.Enum.Bounded (Bio.Prelude.Pair a b)
+ Bio.Prelude: instance (GHC.Read.Read a, GHC.Read.Read b) => GHC.Read.Read (Bio.Prelude.Pair a b)
+ Bio.Prelude: instance (GHC.Show.Show a, GHC.Show.Show b) => GHC.Show.Show (Bio.Prelude.Pair a b)
+ Bio.Prelude: intPtrToPtr :: () => IntPtr -> Ptr a
+ Bio.Prelude: intToDigit :: Int -> Char
+ Bio.Prelude: interact :: String -> String -> IO ()
+ Bio.Prelude: intercalate :: () => [a] -> [[a]] -> [a]
+ Bio.Prelude: interruptible :: () => IO a -> IO a
+ Bio.Prelude: intersect :: Eq a => [a] -> [a] -> [a]
+ Bio.Prelude: intersectBy :: () => a -> a -> Bool -> [a] -> [a] -> [a]
+ Bio.Prelude: intersperse :: () => a -> [a] -> [a]
+ Bio.Prelude: ioError :: () => IOError -> IO a
+ Bio.Prelude: ioException :: () => IOException -> IO a
+ Bio.Prelude: ioManagerCapabilitiesChanged :: IO ()
+ Bio.Prelude: ioeGetErrorString :: IOError -> String
+ Bio.Prelude: ioeGetErrorType :: IOError -> IOErrorType
+ Bio.Prelude: ioeGetFileName :: IOError -> Maybe FilePath
+ Bio.Prelude: ioeGetHandle :: IOError -> Maybe Handle
+ Bio.Prelude: ioeGetLocation :: IOError -> String
+ Bio.Prelude: ioeSetErrorString :: IOError -> String -> IOError
+ Bio.Prelude: ioeSetErrorType :: IOError -> IOErrorType -> IOError
+ Bio.Prelude: ioeSetFileName :: IOError -> FilePath -> IOError
+ Bio.Prelude: ioeSetHandle :: IOError -> Handle -> IOError
+ Bio.Prelude: ioeSetLocation :: IOError -> String -> IOError
+ Bio.Prelude: isAlgType :: DataType -> Bool
+ Bio.Prelude: isAlpha :: Char -> Bool
+ Bio.Prelude: isAlphaNum :: Char -> Bool
+ Bio.Prelude: isAlreadyExistsError :: IOError -> Bool
+ Bio.Prelude: isAlreadyExistsErrorType :: IOErrorType -> Bool
+ Bio.Prelude: isAlreadyInUseError :: IOError -> Bool
+ Bio.Prelude: isAlreadyInUseErrorType :: IOErrorType -> Bool
+ Bio.Prelude: isAscii :: Char -> Bool
+ Bio.Prelude: isAsciiLower :: Char -> Bool
+ Bio.Prelude: isAsciiUpper :: Char -> Bool
+ Bio.Prelude: isControl :: Char -> Bool
+ Bio.Prelude: isCurrentThreadBound :: IO Bool
+ Bio.Prelude: isDenormalized :: RealFloat a => a -> Bool
+ Bio.Prelude: isDigit :: Char -> Bool
+ Bio.Prelude: isDoesNotExistError :: IOError -> Bool
+ Bio.Prelude: isDoesNotExistErrorType :: IOErrorType -> Bool
+ Bio.Prelude: isEOFError :: IOError -> Bool
+ Bio.Prelude: isEOFErrorType :: IOErrorType -> Bool
+ Bio.Prelude: isEmptyMVar :: () => MVar a -> IO Bool
+ Bio.Prelude: isFullError :: IOError -> Bool
+ Bio.Prelude: isFullErrorType :: IOErrorType -> Bool
+ Bio.Prelude: isHexDigit :: Char -> Bool
+ Bio.Prelude: isIEEE :: RealFloat a => a -> Bool
+ Bio.Prelude: isIllegalOperation :: IOError -> Bool
+ Bio.Prelude: isIllegalOperationErrorType :: IOErrorType -> Bool
+ Bio.Prelude: isInfinite :: RealFloat a => a -> Bool
+ Bio.Prelude: isInfixOf :: Eq a => [a] -> [a] -> Bool
+ Bio.Prelude: isJust :: () => Maybe a -> Bool
+ Bio.Prelude: isLatin1 :: Char -> Bool
+ Bio.Prelude: isLeft :: () => Either a b -> Bool
+ Bio.Prelude: isLetter :: Char -> Bool
+ Bio.Prelude: isLower :: Char -> Bool
+ Bio.Prelude: isMark :: Char -> Bool
+ Bio.Prelude: isNaN :: RealFloat a => a -> Bool
+ Bio.Prelude: isNegativeZero :: RealFloat a => a -> Bool
+ Bio.Prelude: isNorepType :: DataType -> Bool
+ Bio.Prelude: isNothing :: () => Maybe a -> Bool
+ Bio.Prelude: isNumber :: Char -> Bool
+ Bio.Prelude: isOctDigit :: Char -> Bool
+ Bio.Prelude: isPermissionError :: IOError -> Bool
+ Bio.Prelude: isPermissionErrorType :: IOErrorType -> Bool
+ Bio.Prelude: isPrefixOf :: Eq a => [a] -> [a] -> Bool
+ Bio.Prelude: isPrint :: Char -> Bool
+ Bio.Prelude: isPunctuation :: Char -> Bool
+ Bio.Prelude: isRight :: () => Either a b -> Bool
+ Bio.Prelude: isSeparator :: Char -> Bool
+ Bio.Prelude: isSigned :: Bits a => a -> Bool
+ Bio.Prelude: isSpace :: Char -> Bool
+ Bio.Prelude: isSubsequenceOf :: Eq a => [a] -> [a] -> Bool
+ Bio.Prelude: isSuffixOf :: Eq a => [a] -> [a] -> Bool
+ Bio.Prelude: isSymbol :: Char -> Bool
+ Bio.Prelude: isUpper :: Char -> Bool
+ Bio.Prelude: isUserError :: IOError -> Bool
+ Bio.Prelude: isUserErrorType :: IOErrorType -> Bool
+ Bio.Prelude: iterate :: () => a -> a -> a -> [a]
+ Bio.Prelude: iterate' :: () => a -> a -> a -> [a]
+ Bio.Prelude: join :: Monad m => m m a -> m a
+ Bio.Prelude: killThread :: ThreadId -> IO ()
+ Bio.Prelude: labelThread :: ThreadId -> String -> IO ()
+ Bio.Prelude: last :: () => [a] -> a
+ Bio.Prelude: lazy :: () => a -> a
+ Bio.Prelude: lcm :: Integral a => a -> a -> a
+ Bio.Prelude: left :: ArrowChoice a => a b c -> a Either b d Either c d
+ Bio.Prelude: leftApp :: ArrowApply a => a b c -> a Either b d Either c d
+ Bio.Prelude: lefts :: () => [Either a b] -> [a]
+ Bio.Prelude: length :: Foldable t => t a -> Int
+ Bio.Prelude: lex :: ReadS String
+ Bio.Prelude: lexDigits :: ReadS String
+ Bio.Prelude: lexLitChar :: ReadS String
+ Bio.Prelude: liftA :: Applicative f => a -> b -> f a -> f b
+ Bio.Prelude: liftA2 :: Applicative f => a -> b -> c -> f a -> f b -> f c
+ Bio.Prelude: liftA3 :: Applicative f => a -> b -> c -> d -> f a -> f b -> f c -> f d
+ Bio.Prelude: liftM :: Monad m => a1 -> r -> m a1 -> m r
+ Bio.Prelude: liftM2 :: Monad m => a1 -> a2 -> r -> m a1 -> m a2 -> m r
+ Bio.Prelude: liftM3 :: Monad m => a1 -> a2 -> a3 -> r -> m a1 -> m a2 -> m a3 -> m r
+ Bio.Prelude: liftM4 :: Monad m => a1 -> a2 -> a3 -> a4 -> r -> m a1 -> m a2 -> m a3 -> m a4 -> m r
+ Bio.Prelude: liftM5 :: Monad m => a1 -> a2 -> a3 -> a4 -> a5 -> r -> m a1 -> m a2 -> m a3 -> m a4 -> m a5 -> m r
+ Bio.Prelude: lines :: String -> [String]
+ Bio.Prelude: listToMaybe :: () => [a] -> Maybe a
+ Bio.Prelude: log :: Floating a => a -> a
+ Bio.Prelude: logBase :: Floating a => a -> a -> a
+ Bio.Prelude: lookup :: Eq a => a -> [(a, b)] -> Maybe b
+ Bio.Prelude: lookupEnv :: String -> IO Maybe String
+ Bio.Prelude: loop :: ArrowLoop a => a (b, d) (c, d) -> a b c
+ Bio.Prelude: magnitude :: RealFloat a => Complex a -> a
+ Bio.Prelude: makeStableName :: () => a -> IO StableName a
+ Bio.Prelude: makeVersion :: [Int] -> Version
+ Bio.Prelude: mallocForeignPtr :: Storable a => IO ForeignPtr a
+ Bio.Prelude: mallocForeignPtrArray :: Storable a => Int -> IO ForeignPtr a
+ Bio.Prelude: mallocForeignPtrArray0 :: Storable a => Int -> IO ForeignPtr a
+ Bio.Prelude: mallocForeignPtrBytes :: () => Int -> IO ForeignPtr a
+ Bio.Prelude: many :: Alternative f => f a -> f [a]
+ Bio.Prelude: map :: () => a -> b -> [a] -> [b]
+ Bio.Prelude: mapAccumL :: Traversable t => a -> b -> (a, c) -> a -> t b -> (a, t c)
+ Bio.Prelude: mapAccumR :: Traversable t => a -> b -> (a, c) -> a -> t b -> (a, t c)
+ Bio.Prelude: mapAndUnzipM :: Applicative m => a -> m (b, c) -> [a] -> m ([b], [c])
+ Bio.Prelude: mapException :: (Exception e1, Exception e2) => e1 -> e2 -> a -> a
+ Bio.Prelude: mapM :: (Traversable t, Monad m) => a -> m b -> t a -> m t b
+ Bio.Prelude: mapM_ :: (Foldable t, Monad m) => a -> m b -> t a -> m ()
+ Bio.Prelude: mapMaybe :: () => a -> Maybe b -> [a] -> [b]
+ Bio.Prelude: mappend :: Monoid a => a -> a -> a
+ Bio.Prelude: mask :: () => forall a. () => IO a -> IO a -> IO b -> IO b
+ Bio.Prelude: mask_ :: () => IO a -> IO a
+ Bio.Prelude: max :: Ord a => a -> a -> a
+ Bio.Prelude: maxBound :: Bounded a => a
+ Bio.Prelude: maxConstrIndex :: DataType -> ConIndex
+ Bio.Prelude: maximum :: (Foldable t, Ord a) => t a -> a
+ Bio.Prelude: maximumBy :: Foldable t => a -> a -> Ordering -> t a -> a
+ Bio.Prelude: maybe :: () => b -> a -> b -> Maybe a -> b
+ Bio.Prelude: maybeToList :: () => Maybe a -> [a]
+ Bio.Prelude: mconcat :: Monoid a => [a] -> a
+ Bio.Prelude: mempty :: Monoid a => a
+ Bio.Prelude: mfilter :: MonadPlus m => a -> Bool -> m a -> m a
+ Bio.Prelude: mfix :: MonadFix m => a -> m a -> m a
+ Bio.Prelude: min :: Ord a => a -> a -> a
+ Bio.Prelude: minBound :: Bounded a => a
+ Bio.Prelude: minimum :: (Foldable t, Ord a) => t a -> a
+ Bio.Prelude: minimumBy :: Foldable t => a -> a -> Ordering -> t a -> a
+ Bio.Prelude: minusPtr :: () => Ptr a -> Ptr b -> Int
+ Bio.Prelude: mkCharConstr :: DataType -> Char -> Constr
+ Bio.Prelude: mkCharType :: String -> DataType
+ Bio.Prelude: mkConstr :: DataType -> String -> [String] -> Fixity -> Constr
+ Bio.Prelude: mkDataType :: String -> [Constr] -> DataType
+ Bio.Prelude: mkFloatType :: String -> DataType
+ Bio.Prelude: mkFunTy :: TypeRep -> TypeRep -> TypeRep
+ Bio.Prelude: mkIOError :: IOErrorType -> String -> Maybe Handle -> Maybe FilePath -> IOError
+ Bio.Prelude: mkIntType :: String -> DataType
+ Bio.Prelude: mkIntegralConstr :: (Integral a, Show a) => DataType -> a -> Constr
+ Bio.Prelude: mkNoRepType :: String -> DataType
+ Bio.Prelude: mkPolar :: Floating a => a -> a -> Complex a
+ Bio.Prelude: mkRealConstr :: (Real a, Show a) => DataType -> a -> Constr
+ Bio.Prelude: mkWeakIORef :: () => IORef a -> IO () -> IO Weak IORef a
+ Bio.Prelude: mkWeakMVar :: () => MVar a -> IO () -> IO Weak MVar a
+ Bio.Prelude: mkWeakThreadId :: ThreadId -> IO Weak ThreadId
+ Bio.Prelude: mod :: Integral a => a -> a -> a
+ Bio.Prelude: mod' :: Real a => a -> a -> a
+ Bio.Prelude: modifyIOError :: () => IOError -> IOError -> IO a -> IO a
+ Bio.Prelude: modifyIORef :: () => IORef a -> a -> a -> IO ()
+ Bio.Prelude: modifyIORef' :: () => IORef a -> a -> a -> IO ()
+ Bio.Prelude: modifyMVar :: () => MVar a -> a -> IO (a, b) -> IO b
+ Bio.Prelude: modifyMVarMasked :: () => MVar a -> a -> IO (a, b) -> IO b
+ Bio.Prelude: modifyMVarMasked_ :: () => MVar a -> a -> IO a -> IO ()
+ Bio.Prelude: modifyMVar_ :: () => MVar a -> a -> IO a -> IO ()
+ Bio.Prelude: modifySTRef :: () => STRef s a -> a -> a -> ST s ()
+ Bio.Prelude: modifySTRef' :: () => STRef s a -> a -> a -> ST s ()
+ Bio.Prelude: mplus :: MonadPlus m => m a -> m a -> m a
+ Bio.Prelude: msum :: (Foldable t, MonadPlus m) => t m a -> m a
+ Bio.Prelude: myThreadId :: IO ThreadId
+ Bio.Prelude: mzero :: MonadPlus m => m a
+ Bio.Prelude: negate :: Num a => a -> a
+ Bio.Prelude: newChan :: () => IO Chan a
+ Bio.Prelude: newEmptyMVar :: () => IO MVar a
+ Bio.Prelude: newForeignPtr :: () => FinalizerPtr a -> Ptr a -> IO ForeignPtr a
+ Bio.Prelude: newForeignPtrEnv :: () => FinalizerEnvPtr env a -> Ptr env -> Ptr a -> IO ForeignPtr a
+ Bio.Prelude: newForeignPtr_ :: () => Ptr a -> IO ForeignPtr a
+ Bio.Prelude: newIORef :: () => a -> IO IORef a
+ Bio.Prelude: newMVar :: () => a -> IO MVar a
+ Bio.Prelude: newQSem :: Int -> IO QSem
+ Bio.Prelude: newQSemN :: Int -> IO QSemN
+ Bio.Prelude: newSTRef :: () => a -> ST s STRef s a
+ Bio.Prelude: newStablePtr :: () => a -> IO StablePtr a
+ Bio.Prelude: newStablePtrPrimMVar :: MVar () -> IO StablePtr PrimMVar
+ Bio.Prelude: newTVar :: () => a -> STM TVar a
+ Bio.Prelude: newTVarIO :: () => a -> IO TVar a
+ Bio.Prelude: newUnique :: IO Unique
+ Bio.Prelude: newtype Const a (b :: k) :: forall k. () => * -> k -> *
+ Bio.Prelude: newtype All
+ Bio.Prelude: newtype Any
+ Bio.Prelude: newtype ArrowMonad (a :: * -> * -> *) b
+ Bio.Prelude: newtype AssertionFailed
+ Bio.Prelude: newtype CompactionFailed
+ Bio.Prelude: newtype Down a
+ Bio.Prelude: newtype Dual a
+ Bio.Prelude: newtype Endo a
+ Bio.Prelude: newtype First a
+ Bio.Prelude: newtype Fixed a
+ Bio.Prelude: newtype IntPtr
+ Bio.Prelude: newtype Kleisli (m :: * -> *) a b
+ Bio.Prelude: newtype Last a
+ Bio.Prelude: newtype NoMethodError
+ Bio.Prelude: newtype PatternMatchFail
+ Bio.Prelude: newtype Product a
+ Bio.Prelude: newtype RecConError
+ Bio.Prelude: newtype RecSelError
+ Bio.Prelude: newtype RecUpdError
+ Bio.Prelude: newtype STM a
+ Bio.Prelude: newtype Sum a
+ Bio.Prelude: newtype TypeError
+ Bio.Prelude: newtype WordPtr
+ Bio.Prelude: newtype WrappedArrow (a :: * -> * -> *) b c
+ Bio.Prelude: newtype WrappedMonad (m :: * -> *) a
+ Bio.Prelude: newtype ZipList a
+ Bio.Prelude: newtype Alt (f :: k -> *) (a :: k) :: forall k. () => k -> * -> k -> *
+ Bio.Prelude: not :: Bool -> Bool
+ Bio.Prelude: notElem :: (Foldable t, Eq a) => a -> t a -> Bool
+ Bio.Prelude: nub :: Eq a => [a] -> [a]
+ Bio.Prelude: nubBy :: () => a -> a -> Bool -> [a] -> [a]
+ Bio.Prelude: null :: Foldable t => t a -> Bool
+ Bio.Prelude: nullFunPtr :: () => FunPtr a
+ Bio.Prelude: nullPtr :: () => Ptr a
+ Bio.Prelude: numCapabilities :: Int
+ Bio.Prelude: numSparks :: IO Int
+ Bio.Prelude: numerator :: () => Ratio a -> a
+ Bio.Prelude: odd :: Integral a => a -> Bool
+ Bio.Prelude: on :: () => b -> b -> c -> a -> b -> a -> a -> c
+ Bio.Prelude: onException :: () => IO a -> IO b -> IO a
+ Bio.Prelude: optional :: Alternative f => f a -> f Maybe a
+ Bio.Prelude: or :: Foldable t => t Bool -> Bool
+ Bio.Prelude: orElse :: () => STM a -> STM a -> STM a
+ Bio.Prelude: ord :: Char -> Int
+ Bio.Prelude: otherwise :: Bool
+ Bio.Prelude: par :: () => a -> b -> b
+ Bio.Prelude: parseVersion :: ReadP Version
+ Bio.Prelude: partition :: () => a -> Bool -> [a] -> ([a], [a])
+ Bio.Prelude: partitionEithers :: () => [Either a b] -> ([a], [b])
+ Bio.Prelude: peek :: Storable a => Ptr a -> IO a
+ Bio.Prelude: peekByteOff :: Storable a => Ptr b -> Int -> IO a
+ Bio.Prelude: peekElemOff :: Storable a => Ptr a -> Int -> IO a
+ Bio.Prelude: performGC :: IO ()
+ Bio.Prelude: performMajorGC :: IO ()
+ Bio.Prelude: performMinorGC :: IO ()
+ Bio.Prelude: permissionErrorType :: IOErrorType
+ Bio.Prelude: permutations :: () => [a] -> [[a]]
+ Bio.Prelude: phase :: RealFloat a => Complex a -> a
+ Bio.Prelude: pi :: Floating a => a
+ Bio.Prelude: plusForeignPtr :: () => ForeignPtr a -> Int -> ForeignPtr b
+ Bio.Prelude: plusPtr :: () => Ptr a -> Int -> Ptr b
+ Bio.Prelude: poke :: Storable a => Ptr a -> a -> IO ()
+ Bio.Prelude: pokeByteOff :: Storable a => Ptr b -> Int -> a -> IO ()
+ Bio.Prelude: pokeElemOff :: Storable a => Ptr a -> Int -> a -> IO ()
+ Bio.Prelude: polar :: RealFloat a => Complex a -> (a, a)
+ Bio.Prelude: popCount :: Bits a => a -> Int
+ Bio.Prelude: popCountDefault :: (Bits a, Num a) => a -> Int
+ Bio.Prelude: pred :: Enum a => a -> a
+ Bio.Prelude: print :: Show a => a -> IO ()
+ Bio.Prelude: printf :: PrintfType r => String -> r
+ Bio.Prelude: product :: (Foldable t, Num a) => t a -> a
+ Bio.Prelude: properFraction :: (RealFrac a, Integral b) => a -> (b, a)
+ Bio.Prelude: pseq :: () => a -> b -> b
+ Bio.Prelude: ptrToIntPtr :: () => Ptr a -> IntPtr
+ Bio.Prelude: ptrToWordPtr :: () => Ptr a -> WordPtr
+ Bio.Prelude: pure :: Applicative f => a -> f a
+ Bio.Prelude: putChar :: Char -> IO ()
+ Bio.Prelude: putMVar :: () => MVar a -> a -> IO ()
+ Bio.Prelude: putStr :: String -> IO ()
+ Bio.Prelude: putStrLn :: String -> IO ()
+ Bio.Prelude: putTraceMsg :: String -> IO ()
+ Bio.Prelude: quot :: Integral a => a -> a -> a
+ Bio.Prelude: quotRem :: Integral a => a -> a -> (a, a)
+ Bio.Prelude: range :: Ix a => (a, a) -> [a]
+ Bio.Prelude: rangeSize :: Ix a => (a, a) -> Int
+ Bio.Prelude: read :: Read a => String -> a
+ Bio.Prelude: readChan :: () => Chan a -> IO a
+ Bio.Prelude: readConstr :: DataType -> String -> Maybe Constr
+ Bio.Prelude: readDec :: (Eq a, Num a) => ReadS a
+ Bio.Prelude: readEither :: Read a => String -> Either String a
+ Bio.Prelude: readFile :: FilePath -> IO String
+ Bio.Prelude: readFloat :: RealFrac a => ReadS a
+ Bio.Prelude: readHex :: (Eq a, Num a) => ReadS a
+ Bio.Prelude: readIO :: Read a => String -> IO a
+ Bio.Prelude: readIORef :: () => IORef a -> IO a
+ Bio.Prelude: readInt :: Num a => a -> Char -> Bool -> Char -> Int -> ReadS a
+ Bio.Prelude: readList :: Read a => ReadS [a]
+ Bio.Prelude: readListPrec :: Read a => ReadPrec [a]
+ Bio.Prelude: readLitChar :: ReadS Char
+ Bio.Prelude: readLn :: Read a => IO a
+ Bio.Prelude: readMVar :: () => MVar a -> IO a
+ Bio.Prelude: readMaybe :: Read a => String -> Maybe a
+ Bio.Prelude: readOct :: (Eq a, Num a) => ReadS a
+ Bio.Prelude: readP_to_Prec :: () => Int -> ReadP a -> ReadPrec a
+ Bio.Prelude: readP_to_S :: () => ReadP a -> ReadS a
+ Bio.Prelude: readParen :: () => Bool -> ReadS a -> ReadS a
+ Bio.Prelude: readPrec :: Read a => ReadPrec a
+ Bio.Prelude: readPrec_to_P :: () => ReadPrec a -> Int -> ReadP a
+ Bio.Prelude: readPrec_to_S :: () => ReadPrec a -> Int -> ReadS a
+ Bio.Prelude: readSTRef :: () => STRef s a -> ST s a
+ Bio.Prelude: readS_to_P :: () => ReadS a -> ReadP a
+ Bio.Prelude: readS_to_Prec :: () => Int -> ReadS a -> ReadPrec a
+ Bio.Prelude: readSigned :: Real a => ReadS a -> ReadS a
+ Bio.Prelude: readTVar :: () => TVar a -> STM a
+ Bio.Prelude: readTVarIO :: () => TVar a -> IO a
+ Bio.Prelude: reads :: Read a => ReadS a
+ Bio.Prelude: readsPrec :: Read a => Int -> ReadS a
+ Bio.Prelude: realPart :: () => Complex a -> a
+ Bio.Prelude: realToFrac :: (Real a, Fractional b) => a -> b
+ Bio.Prelude: recip :: Fractional a => a -> a
+ Bio.Prelude: registerDelay :: Int -> IO TVar Bool
+ Bio.Prelude: rem :: Integral a => a -> a -> a
+ Bio.Prelude: repConstr :: DataType -> ConstrRep -> Constr
+ Bio.Prelude: repeat :: () => a -> [a]
+ Bio.Prelude: replicate :: () => Int -> a -> [a]
+ Bio.Prelude: replicateM :: Applicative m => Int -> m a -> m [a]
+ Bio.Prelude: replicateM_ :: Applicative m => Int -> m a -> m ()
+ Bio.Prelude: reportError :: SomeException -> IO ()
+ Bio.Prelude: reportHeapOverflow :: IO ()
+ Bio.Prelude: reportStackOverflow :: IO ()
+ Bio.Prelude: resolution :: HasResolution a => p a -> Integer
+ Bio.Prelude: retry :: () => STM a
+ Bio.Prelude: return :: Monad m => a -> m a
+ Bio.Prelude: returnA :: Arrow a => a b b
+ Bio.Prelude: reverse :: () => [a] -> [a]
+ Bio.Prelude: right :: ArrowChoice a => a b c -> a Either d b Either d c
+ Bio.Prelude: rights :: () => [Either a b] -> [b]
+ Bio.Prelude: rnfTyCon :: TyCon -> ()
+ Bio.Prelude: rnfTypeRep :: TypeRep -> ()
+ Bio.Prelude: rotate :: Bits a => a -> Int -> a
+ Bio.Prelude: rotateL :: Bits a => a -> Int -> a
+ Bio.Prelude: rotateR :: Bits a => a -> Int -> a
+ Bio.Prelude: round :: (RealFrac a, Integral b) => a -> b
+ Bio.Prelude: rtsSupportsBoundThreads :: Bool
+ Bio.Prelude: runHandlers :: ForeignPtr Word8 -> Signal -> IO ()
+ Bio.Prelude: runInBoundThread :: () => IO a -> IO a
+ Bio.Prelude: runInUnboundThread :: () => IO a -> IO a
+ Bio.Prelude: runST :: () => forall s. () => ST s a -> a
+ Bio.Prelude: runSparks :: IO ()
+ Bio.Prelude: scaleFloat :: RealFloat a => Int -> a -> a
+ Bio.Prelude: scanl :: () => b -> a -> b -> b -> [a] -> [b]
+ Bio.Prelude: scanl' :: () => b -> a -> b -> b -> [a] -> [b]
+ Bio.Prelude: scanl1 :: () => a -> a -> a -> [a] -> [a]
+ Bio.Prelude: scanr :: () => a -> b -> b -> b -> [a] -> [b]
+ Bio.Prelude: scanr1 :: () => a -> a -> a -> [a] -> [a]
+ Bio.Prelude: sconcat :: Semigroup a => NonEmpty a -> a
+ Bio.Prelude: second :: Bifunctor p => b -> c -> p a b -> p a c
+ Bio.Prelude: seq :: () => a -> b -> b
+ Bio.Prelude: sequence :: (Traversable t, Monad m) => t m a -> m t a
+ Bio.Prelude: sequenceA :: (Traversable t, Applicative f) => t f a -> f t a
+ Bio.Prelude: sequenceA_ :: (Foldable t, Applicative f) => t f a -> f ()
+ Bio.Prelude: sequence_ :: (Foldable t, Monad m) => t m a -> m ()
+ Bio.Prelude: setAllocationCounter :: Int64 -> IO ()
+ Bio.Prelude: setBit :: Bits a => a -> Int -> a
+ Bio.Prelude: setEnv :: String -> String -> IO ()
+ Bio.Prelude: setHandler :: Signal -> Maybe (HandlerFun, Dynamic) -> IO Maybe (HandlerFun, Dynamic)
+ Bio.Prelude: setNumCapabilities :: Int -> IO ()
+ Bio.Prelude: setUncaughtExceptionHandler :: SomeException -> IO () -> IO ()
+ Bio.Prelude: shift :: Bits a => a -> Int -> a
+ Bio.Prelude: shiftL :: Bits a => a -> Int -> a
+ Bio.Prelude: shiftR :: Bits a => a -> Int -> a
+ Bio.Prelude: show :: Show a => a -> String
+ Bio.Prelude: showChar :: Char -> ShowS
+ Bio.Prelude: showConstr :: Constr -> String
+ Bio.Prelude: showEFloat :: RealFloat a => Maybe Int -> a -> ShowS
+ Bio.Prelude: showFFloat :: RealFloat a => Maybe Int -> a -> ShowS
+ Bio.Prelude: showFFloatAlt :: RealFloat a => Maybe Int -> a -> ShowS
+ Bio.Prelude: showFixed :: HasResolution a => Bool -> Fixed a -> String
+ Bio.Prelude: showFloat :: RealFloat a => a -> ShowS
+ Bio.Prelude: showGFloat :: RealFloat a => Maybe Int -> a -> ShowS
+ Bio.Prelude: showGFloatAlt :: RealFloat a => Maybe Int -> a -> ShowS
+ Bio.Prelude: showHFloat :: RealFloat a => a -> ShowS
+ Bio.Prelude: showHex :: (Integral a, Show a) => a -> ShowS
+ Bio.Prelude: showInt :: Integral a => a -> ShowS
+ Bio.Prelude: showIntAtBase :: (Integral a, Show a) => a -> Int -> Char -> a -> ShowS
+ Bio.Prelude: showList :: Show a => [a] -> ShowS
+ Bio.Prelude: showLitChar :: Char -> ShowS
+ Bio.Prelude: showOct :: (Integral a, Show a) => a -> ShowS
+ Bio.Prelude: showParen :: Bool -> ShowS -> ShowS
+ Bio.Prelude: showSigned :: Real a => a -> ShowS -> Int -> a -> ShowS
+ Bio.Prelude: showString :: String -> ShowS
+ Bio.Prelude: showVersion :: Version -> String
+ Bio.Prelude: shows :: Show a => a -> ShowS
+ Bio.Prelude: showsPrec :: Show a => Int -> a -> ShowS
+ Bio.Prelude: showsTypeRep :: TypeRep -> ShowS
+ Bio.Prelude: signalQSem :: QSem -> IO ()
+ Bio.Prelude: signalQSemN :: QSemN -> Int -> IO ()
+ Bio.Prelude: significand :: RealFloat a => a -> a
+ Bio.Prelude: signum :: Num a => a -> a
+ Bio.Prelude: sin :: Floating a => a -> a
+ Bio.Prelude: sinh :: Floating a => a -> a
+ Bio.Prelude: sizeOf :: Storable a => a -> Int
+ Bio.Prelude: snd :: () => (a, b) -> b
+ Bio.Prelude: some :: Alternative f => f a -> f [a]
+ Bio.Prelude: sort :: Ord a => [a] -> [a]
+ Bio.Prelude: sortBy :: () => a -> a -> Ordering -> [a] -> [a]
+ Bio.Prelude: sortOn :: Ord b => a -> b -> [a] -> [a]
+ Bio.Prelude: sortWith :: Ord b => a -> b -> [a] -> [a]
+ Bio.Prelude: span :: () => a -> Bool -> [a] -> ([a], [a])
+ Bio.Prelude: splitAt :: () => Int -> [a] -> ([a], [a])
+ Bio.Prelude: splitTyConApp :: TypeRep -> (TyCon, [TypeRep])
+ Bio.Prelude: sqrt :: Floating a => a -> a
+ Bio.Prelude: stToIO :: () => ST RealWorld a -> IO a
+ Bio.Prelude: stackOverflow :: SomeException
+ Bio.Prelude: stderr :: Handle
+ Bio.Prelude: stdin :: Handle
+ Bio.Prelude: stdout :: Handle
+ Bio.Prelude: stimes :: (Semigroup a, Integral b) => b -> a -> a
+ Bio.Prelude: stripPrefix :: Eq a => [a] -> [a] -> Maybe [a]
+ Bio.Prelude: subsequences :: () => [a] -> [[a]]
+ Bio.Prelude: subtract :: Num a => a -> a -> a
+ Bio.Prelude: succ :: Enum a => a -> a
+ Bio.Prelude: sum :: (Foldable t, Num a) => t a -> a
+ Bio.Prelude: swap :: () => (a, b) -> (b, a)
+ Bio.Prelude: swapMVar :: () => MVar a -> a -> IO a
+ Bio.Prelude: tail :: () => [a] -> [a]
+ Bio.Prelude: tails :: () => [a] -> [[a]]
+ Bio.Prelude: take :: () => Int -> [a] -> [a]
+ Bio.Prelude: takeMVar :: () => MVar a -> IO a
+ Bio.Prelude: takeWhile :: () => a -> Bool -> [a] -> [a]
+ Bio.Prelude: tan :: Floating a => a -> a
+ Bio.Prelude: tanh :: Floating a => a -> a
+ Bio.Prelude: testBit :: Bits a => a -> Int -> Bool
+ Bio.Prelude: testBitDefault :: (Bits a, Num a) => a -> Int -> Bool
+ Bio.Prelude: threadCapability :: ThreadId -> IO (Int, Bool)
+ Bio.Prelude: threadDelay :: Int -> IO ()
+ Bio.Prelude: threadStatus :: ThreadId -> IO ThreadStatus
+ Bio.Prelude: threadWaitRead :: Fd -> IO ()
+ Bio.Prelude: threadWaitReadSTM :: Fd -> IO (STM (), IO ())
+ Bio.Prelude: threadWaitWrite :: Fd -> IO ()
+ Bio.Prelude: threadWaitWriteSTM :: Fd -> IO (STM (), IO ())
+ Bio.Prelude: throw :: Exception e => e -> a
+ Bio.Prelude: throwIO :: Exception e => e -> IO a
+ Bio.Prelude: throwSTM :: Exception e => e -> STM a
+ Bio.Prelude: throwTo :: Exception e => ThreadId -> e -> IO ()
+ Bio.Prelude: timeout :: () => Int -> IO a -> IO Maybe a
+ Bio.Prelude: toConstr :: Data a => a -> Constr
+ Bio.Prelude: toDyn :: Typeable a => a -> Dynamic
+ Bio.Prelude: toEnum :: Enum a => Int -> a
+ Bio.Prelude: toException :: Exception e => e -> SomeException
+ Bio.Prelude: toInteger :: Integral a => a -> Integer
+ Bio.Prelude: toIntegralSized :: (Integral a, Integral b, Bits a, Bits b) => a -> Maybe b
+ Bio.Prelude: toList :: Foldable t => t a -> [a]
+ Bio.Prelude: toLower :: Char -> Char
+ Bio.Prelude: toRational :: Real a => a -> Rational
+ Bio.Prelude: toTitle :: Char -> Char
+ Bio.Prelude: toUpper :: Char -> Char
+ Bio.Prelude: touchForeignPtr :: () => ForeignPtr a -> IO ()
+ Bio.Prelude: trace :: () => String -> a -> a
+ Bio.Prelude: traceEvent :: () => String -> a -> a
+ Bio.Prelude: traceEventIO :: String -> IO ()
+ Bio.Prelude: traceIO :: String -> IO ()
+ Bio.Prelude: traceId :: String -> String
+ Bio.Prelude: traceM :: Applicative f => String -> f ()
+ Bio.Prelude: traceMarker :: () => String -> a -> a
+ Bio.Prelude: traceMarkerIO :: String -> IO ()
+ Bio.Prelude: traceShow :: Show a => a -> b -> b
+ Bio.Prelude: traceShowId :: Show a => a -> a
+ Bio.Prelude: traceShowM :: (Show a, Applicative f) => a -> f ()
+ Bio.Prelude: traceStack :: () => String -> a -> a
+ Bio.Prelude: transpose :: () => [[a]] -> [[a]]
+ Bio.Prelude: traverse :: (Traversable t, Applicative f) => a -> f b -> t a -> f t b
+ Bio.Prelude: traverse_ :: (Foldable t, Applicative f) => a -> f b -> t a -> f ()
+ Bio.Prelude: truncate :: (RealFrac a, Integral b) => a -> b
+ Bio.Prelude: try :: Exception e => IO a -> IO Either e a
+ Bio.Prelude: tryIOError :: () => IO a -> IO Either IOError a
+ Bio.Prelude: tryJust :: Exception e => e -> Maybe b -> IO a -> IO Either b a
+ Bio.Prelude: tryPutMVar :: () => MVar a -> a -> IO Bool
+ Bio.Prelude: tryReadMVar :: () => MVar a -> IO Maybe a
+ Bio.Prelude: tryTakeMVar :: () => MVar a -> IO Maybe a
+ Bio.Prelude: tyConFingerprint :: TyCon -> Fingerprint
+ Bio.Prelude: tyConModule :: TyCon -> String
+ Bio.Prelude: tyConName :: TyCon -> String
+ Bio.Prelude: tyConPackage :: TyCon -> String
+ Bio.Prelude: tyconModule :: String -> String
+ Bio.Prelude: tyconUQname :: String -> String
+ Bio.Prelude: type Centi = Fixed E2
+ Bio.Prelude: type ConIndex = Int
+ Bio.Prelude: type Deci = Fixed E1
+ Bio.Prelude: type FilePath = String
+ Bio.Prelude: type FinalizerEnvPtr env a = FunPtr Ptr env -> Ptr a -> IO ()
+ Bio.Prelude: type FinalizerPtr a = FunPtr Ptr a -> IO ()
+ Bio.Prelude: type HandlerFun = ForeignPtr Word8 -> IO ()
+ Bio.Prelude: type IOError = IOException
+ Bio.Prelude: type Micro = Fixed E6
+ Bio.Prelude: type Milli = Fixed E3
+ Bio.Prelude: type Nano = Fixed E9
+ Bio.Prelude: type Pico = Fixed E12
+ Bio.Prelude: type Rational = Ratio Integer
+ Bio.Prelude: type ReadS a = String -> [(a, String)]
+ Bio.Prelude: type ShowS = String -> String
+ Bio.Prelude: type Signal = CInt
+ Bio.Prelude: type String = [Char]
+ Bio.Prelude: type TypeRep = SomeTypeRep
+ Bio.Prelude: type Uni = Fixed E0
+ Bio.Prelude: typeOf :: Typeable a => a -> TypeRep
+ Bio.Prelude: typeOf1 :: Typeable t => t a -> TypeRep
+ Bio.Prelude: typeOf2 :: Typeable t => t a b -> TypeRep
+ Bio.Prelude: typeOf3 :: Typeable t => t a b c -> TypeRep
+ Bio.Prelude: typeOf4 :: Typeable t => t a b c d -> TypeRep
+ Bio.Prelude: typeOf5 :: Typeable t => t a b c d e -> TypeRep
+ Bio.Prelude: typeOf6 :: Typeable t => t a b c d e f -> TypeRep
+ Bio.Prelude: typeOf7 :: Typeable t => t a b c d e f g -> TypeRep
+ Bio.Prelude: typeRep :: Typeable a => proxy a -> TypeRep
+ Bio.Prelude: typeRepArgs :: TypeRep -> [TypeRep]
+ Bio.Prelude: typeRepFingerprint :: TypeRep -> Fingerprint
+ Bio.Prelude: typeRepTyCon :: TypeRep -> TyCon
+ Bio.Prelude: uncons :: () => [a] -> Maybe (a, [a])
+ Bio.Prelude: uncurry :: () => a -> b -> c -> (a, b) -> c
+ Bio.Prelude: undefined :: HasCallStack => a
+ Bio.Prelude: unfoldr :: () => b -> Maybe (a, b) -> b -> [a]
+ Bio.Prelude: uninterruptibleMask :: () => forall a. () => IO a -> IO a -> IO b -> IO b
+ Bio.Prelude: uninterruptibleMask_ :: () => IO a -> IO a
+ Bio.Prelude: union :: Eq a => [a] -> [a] -> [a]
+ Bio.Prelude: unionBy :: () => a -> a -> Bool -> [a] -> [a] -> [a]
+ Bio.Prelude: unless :: Applicative f => Bool -> f () -> f ()
+ Bio.Prelude: unlines :: [String] -> String
+ Bio.Prelude: unsafeCoerce :: () => a -> b
+ Bio.Prelude: unsafeDupablePerformIO :: () => IO a -> a
+ Bio.Prelude: unsafeFixIO :: () => a -> IO a -> IO a
+ Bio.Prelude: unsafeIOToSTM :: () => IO a -> STM a
+ Bio.Prelude: unsafeInterleaveIO :: () => IO a -> IO a
+ Bio.Prelude: unsafePerformIO :: () => IO a -> a
+ Bio.Prelude: unsafeShiftL :: Bits a => a -> Int -> a
+ Bio.Prelude: unsafeShiftR :: Bits a => a -> Int -> a
+ Bio.Prelude: unsetEnv :: String -> IO ()
+ Bio.Prelude: unsupportedOperation :: IOError
+ Bio.Prelude: untangle :: Addr# -> String -> String
+ Bio.Prelude: until :: () => a -> Bool -> a -> a -> a -> a
+ Bio.Prelude: unwords :: [String] -> String
+ Bio.Prelude: unzip :: () => [(a, b)] -> ([a], [b])
+ Bio.Prelude: unzip3 :: () => [(a, b, c)] -> ([a], [b], [c])
+ Bio.Prelude: unzip4 :: () => [(a, b, c, d)] -> ([a], [b], [c], [d])
+ Bio.Prelude: unzip5 :: () => [(a, b, c, d, e)] -> ([a], [b], [c], [d], [e])
+ Bio.Prelude: unzip6 :: () => [(a, b, c, d, e, f)] -> ([a], [b], [c], [d], [e], [f])
+ Bio.Prelude: unzip7 :: () => [(a, b, c, d, e, f, g)] -> ([a], [b], [c], [d], [e], [f], [g])
+ Bio.Prelude: userError :: String -> IOError
+ Bio.Prelude: userErrorType :: IOErrorType
+ Bio.Prelude: void :: Functor f => f a -> f ()
+ Bio.Prelude: waitQSem :: QSem -> IO ()
+ Bio.Prelude: waitQSemN :: QSemN -> Int -> IO ()
+ Bio.Prelude: when :: Applicative f => Bool -> f () -> f ()
+ Bio.Prelude: withArgs :: () => [String] -> IO a -> IO a
+ Bio.Prelude: withForeignPtr :: () => ForeignPtr a -> Ptr a -> IO b -> IO b
+ Bio.Prelude: withMVar :: () => MVar a -> a -> IO b -> IO b
+ Bio.Prelude: withMVarMasked :: () => MVar a -> a -> IO b -> IO b
+ Bio.Prelude: withProgName :: () => String -> IO a -> IO a
+ Bio.Prelude: wordPtrToPtr :: () => WordPtr -> Ptr a
+ Bio.Prelude: words :: String -> [String]
+ Bio.Prelude: writeChan :: () => Chan a -> a -> IO ()
+ Bio.Prelude: writeFile :: FilePath -> String -> IO ()
+ Bio.Prelude: writeIORef :: () => IORef a -> a -> IO ()
+ Bio.Prelude: writeList2Chan :: () => Chan a -> [a] -> IO ()
+ Bio.Prelude: writeSTRef :: () => STRef s a -> a -> ST s ()
+ Bio.Prelude: writeTVar :: () => TVar a -> a -> STM ()
+ Bio.Prelude: xor :: Bits a => a -> a -> a
+ Bio.Prelude: yield :: IO ()
+ Bio.Prelude: zeroArrow :: ArrowZero a => a b c
+ Bio.Prelude: zeroBits :: Bits a => a
+ Bio.Prelude: zip :: () => [a] -> [b] -> [(a, b)]
+ Bio.Prelude: zip3 :: () => [a] -> [b] -> [c] -> [(a, b, c)]
+ Bio.Prelude: zip4 :: () => [a] -> [b] -> [c] -> [d] -> [(a, b, c, d)]
+ Bio.Prelude: zip5 :: () => [a] -> [b] -> [c] -> [d] -> [e] -> [(a, b, c, d, e)]
+ Bio.Prelude: zip6 :: () => [a] -> [b] -> [c] -> [d] -> [e] -> [f] -> [(a, b, c, d, e, f)]
+ Bio.Prelude: zip7 :: () => [a] -> [b] -> [c] -> [d] -> [e] -> [f] -> [g] -> [(a, b, c, d, e, f, g)]
+ Bio.Prelude: zipWith :: () => a -> b -> c -> [a] -> [b] -> [c]
+ Bio.Prelude: zipWith3 :: () => a -> b -> c -> d -> [a] -> [b] -> [c] -> [d]
+ Bio.Prelude: zipWith4 :: () => a -> b -> c -> d -> e -> [a] -> [b] -> [c] -> [d] -> [e]
+ Bio.Prelude: zipWith5 :: () => a -> b -> c -> d -> e -> f -> [a] -> [b] -> [c] -> [d] -> [e] -> [f]
+ Bio.Prelude: zipWith6 :: () => a -> b -> c -> d -> e -> f -> g -> [a] -> [b] -> [c] -> [d] -> [e] -> [f] -> [g]
+ Bio.Prelude: zipWith7 :: () => a -> b -> c -> d -> e -> f -> g -> h -> [a] -> [b] -> [c] -> [d] -> [e] -> [f] -> [g] -> [h]
+ Bio.Prelude: zipWithM :: Applicative m => a -> b -> m c -> [a] -> [b] -> m [c]
+ Bio.Prelude: zipWithM_ :: Applicative m => a -> b -> m c -> [a] -> [b] -> m ()
+ Bio.Util.Storable: peekUnalnWord16BE :: Ptr a -> IO Word16
+ Bio.Util.Storable: peekUnalnWord16LE :: Ptr a -> IO Word16
+ Bio.Util.Storable: peekUnalnWord32BE :: Ptr a -> IO Word32
+ Bio.Util.Storable: peekUnalnWord32LE :: Ptr a -> IO Word32
+ Bio.Util.Storable: peekWord8 :: Ptr a -> IO Word8
+ Bio.Util.Storable: pokeUnalnWord32LE :: Ptr a -> Word32 -> IO ()
- Bio.Bam.Pileup: PileM :: (forall r. (a -> PileF m r) -> PileF m r) -> PileM m a
+ Bio.Bam.Pileup: PileM :: forall r. (a -> PileF m r) -> PileF m r -> PileM m a
- Bio.Bam.Rec: data Word32 :: *
+ Bio.Bam.Rec: data Word32
- Bio.Base: data Word8 :: *
+ Bio.Base: data Word8
- Bio.Iteratee: data Fd :: *
+ Bio.Iteratee: data Fd
- Bio.Iteratee: lift :: MonadTrans t => forall (m :: * -> *) a. Monad m => m a -> t m a
+ Bio.Iteratee: lift :: (MonadTrans t, Monad m) => m a -> t m a
- Bio.Iteratee: liftIO :: MonadIO m => forall a. () => IO a -> m a
+ Bio.Iteratee: liftIO :: MonadIO m => IO a -> m a
- Bio.Iteratee.Base: Iteratee :: (forall r. (a -> Stream s -> m r) -> ((Stream s -> Iteratee s m a) -> Maybe SomeException -> m r) -> m r) -> Iteratee s m a
+ Bio.Iteratee.Base: Iteratee :: forall r. (a -> Stream s -> m r) -> ((Stream s -> Iteratee s m a) -> Maybe SomeException -> m r) -> m r -> Iteratee s m a
- Bio.Iteratee.Exception: class (Typeable * e, Show e) => Exception e
+ Bio.Iteratee.Exception: class (Typeable e, Show e) => Exception e
- Bio.Iteratee.Iteratee: type Enumeratee sFrom sTo (m :: * -> *) a = Iteratee sTo m a -> Iteratee sFrom m (Iteratee sTo m a)
+ Bio.Iteratee.Iteratee: type Enumeratee sFrom sTo m a = Iteratee sTo m a -> Iteratee sFrom m (Iteratee sTo m a)
- Bio.Prelude: data HashMap k v :: * -> * -> *
+ Bio.Prelude: data HashMap k v
- Bio.Prelude: data HashSet a :: * -> *
+ Bio.Prelude: data HashSet a
- Bio.Prelude: data IntMap a :: * -> *
+ Bio.Prelude: data IntMap a
- Bio.Prelude: data IntSet :: *
+ Bio.Prelude: data IntSet
- Bio.Prelude: data Text :: *
+ Bio.Prelude: data Text
- Bio.TwoBit: getRandomSeq :: RandomGen g => TwoBitFile -> Int -> g -> ((Range, [Nucleotide]), g)
+ Bio.TwoBit: getRandomSeq :: TwoBitFile -> Int -> (Int -> g -> (Int, g)) -> g -> ((Range, [Nucleotide]), g)

Files

biohazard.cabal view
@@ -1,5 +1,5 @@ Name:                biohazard-Version:             1.0.0+Version:             1.0.1 Synopsis:            bioinformatics support library Description:         This is a collection of modules I separated from                      various bioinformatics tools.@@ -15,7 +15,7 @@  Cabal-version:       >= 1.10 Build-type:          Simple-Tested-With:         GHC == 7.8.4, GHC == 7.10.3, GHC == 8.0.2, GHC == 8.2.1+Tested-with:         GHC == 7.8.4, GHC == 7.10.3, GHC == 8.0.2, GHC == 8.2.1, GHC == 8.4.1  source-repository head   type:     git@@ -52,22 +52,18 @@                        Bio.TwoBit,                        Bio.Util.MMap,                        Bio.Util.Numeric,+                       Bio.Util.Storable,                        Bio.Util.Zlib -  Build-depends:       async                    >= 2.0 && < 2.2,+  Build-depends:       async                    >= 2.0 && < 2.3,                        attoparsec               >= 0.10 && < 0.14,-                       base                     >= 4.7 && < 4.11,+                       base                     >= 4.7 && < 4.12,                        base-prelude             == 1.2.*,-                       binary                   >= 0.7 && < 0.9,                        bytestring               >= 0.10.2 && < 0.11,                        containers               == 0.5.*,-                       directory                >= 1.2 && < 1.4,                        exceptions               >= 0.6 && < 0.9,-                       filepath                 >= 1.3 && < 1.5,                        hashable                 >= 1.0 && < 1.3,                        primitive                >= 0.5 && < 0.7,-                       random                   >= 1.0 && < 1.2,-                       scientific               == 0.3.*,                        stm                      == 2.4.*,                        text                     >= 1.0 && < 1.3,                        transformers             >= 0.4.1 && < 0.6,@@ -78,6 +74,9 @@                        vector-th-unbox          == 0.2.*,                        zlib                     == 0.6.* +  if !impl(ghc >= 8.0)+    build-depends: semigroups == 0.18.*+   Ghc-options:         -Wall    Default-Language:    Haskell2010@@ -97,16 +96,10 @@                        DeriveGeneric,                        ExistentialQuantification,                        ForeignFunctionInterface,-                       FunctionalDependencies,                        GeneralizedNewtypeDeriving,-                       PatternGuards,                        Rank2Types,-                       ScopedTypeVariables,                        TemplateHaskell,-                       TupleSections, -                       TypeFamilies,-                       TypeOperators,-                       UndecidableInstances+                       TypeFamilies    Hs-source-dirs:      src   Include-dirs:        src/cbits
src/Bio/Adna.hs view
@@ -506,6 +506,7 @@   instance Monoid a => Monoid (DmgStats a) where+    mappend = merge_dmg_stats mappend     mempty = DmgStats { basecompo5 = empty_compo                       , basecompo3 = empty_compo                       , substs5    = empty_subst@@ -523,19 +524,24 @@         empty_compo = [ (nuc, U.empty) | nuc <- [Just nucA, Just nucC, Just nucG, Just nucT, Nothing] ]         empty_subst = [ (n1 :-> n2, U.empty) | n1 <- [nucA..nucT], n2 <- [nucA..nucT] ] -    a `mappend` b = DmgStats { basecompo5 = zipWith s1 (basecompo5 a) (basecompo5 b)-                             , basecompo3 = zipWith s1 (basecompo3 a) (basecompo3 b)-                             , substs5    = zipWith s2 (substs5    a) (substs5    b)-                             , substs3    = zipWith s2 (substs3    a) (substs3    b)-                             , substs5d5  = zipWith s2 (substs5d5  a) (substs5d5  b)-                             , substs3d5  = zipWith s2 (substs3d5  a) (substs3d5  b)-                             , substs5d3  = zipWith s2 (substs5d3  a) (substs5d3  b)-                             , substs3d3  = zipWith s2 (substs3d3  a) (substs3d3  b)-                             , substs5dd  = zipWith s2 (substs5dd  a) (substs5dd  b)-                             , substs3dd  = zipWith s2 (substs3dd  a) (substs3dd  b)-                             , substs5cpg = zipWith s2 (substs5cpg a) (substs5cpg b)-                             , substs3cpg = zipWith s2 (substs3cpg a) (substs3cpg b)-                             , stats_more = mappend    (stats_more a) (stats_more b) }+instance Semigroup a => Semigroup (DmgStats a) where+    (<>) = merge_dmg_stats (<>)++merge_dmg_stats :: (a -> a -> a) -> DmgStats a -> DmgStats a -> DmgStats a+merge_dmg_stats plus a b =+    DmgStats { basecompo5 = zipWith s1 (basecompo5 a) (basecompo5 b)+             , basecompo3 = zipWith s1 (basecompo3 a) (basecompo3 b)+             , substs5    = zipWith s2 (substs5    a) (substs5    b)+             , substs3    = zipWith s2 (substs3    a) (substs3    b)+             , substs5d5  = zipWith s2 (substs5d5  a) (substs5d5  b)+             , substs3d5  = zipWith s2 (substs3d5  a) (substs3d5  b)+             , substs5d3  = zipWith s2 (substs5d3  a) (substs5d3  b)+             , substs3d3  = zipWith s2 (substs3d3  a) (substs3d3  b)+             , substs5dd  = zipWith s2 (substs5dd  a) (substs5dd  b)+             , substs3dd  = zipWith s2 (substs3dd  a) (substs3dd  b)+             , substs5cpg = zipWith s2 (substs5cpg a) (substs5cpg b)+             , substs3cpg = zipWith s2 (substs3cpg a) (substs3cpg b)+             , stats_more = plus       (stats_more a) (stats_more b) }       where         s1 (x, u) (z, v) | x /= z    = error "Mismatch in zip.  This is a bug."                          | U.null u  = (x, v)
src/Bio/Bam/Header.hs view
@@ -106,11 +106,14 @@  instance Monoid BamMeta where     mempty = BamMeta mempty noRefs [] []-    a `mappend` b = BamMeta { meta_hdr = meta_hdr a `mappend` meta_hdr b-                            , meta_refs = meta_refs a >< meta_refs b-                            , meta_other_shit = nub $ meta_other_shit a ++ meta_other_shit b-                            , meta_comment = nub $ meta_comment a ++ meta_comment b }+    mappend = (<>) +instance Semigroup BamMeta where+    a <> b = BamMeta { meta_hdr = meta_hdr a `mappend` meta_hdr b+                     , meta_refs = meta_refs a >< meta_refs b+                     , meta_other_shit = nub $ meta_other_shit a ++ meta_other_shit b+                     , meta_comment = nub $ meta_comment a ++ meta_comment b }+ data BamHeader = BamHeader {         hdr_version :: (Int, Int),         hdr_sorting :: !BamSorting,@@ -119,9 +122,12 @@  instance Monoid BamHeader where     mempty = BamHeader (1,0) Unknown []-    a `mappend` b = BamHeader { hdr_version = hdr_version a `min` hdr_version b-                              , hdr_sorting = let u = hdr_sorting a ; v = hdr_sorting b in if u == v then u else Unknown-                              , hdr_other_shit = hdr_other_shit a ++ hdr_other_shit b }+    mappend = (<>)++instance Semigroup BamHeader where+    a <> b = BamHeader { hdr_version = hdr_version a `min` hdr_version b+                       , hdr_sorting = let u = hdr_sorting a ; v = hdr_sorting b in if u == v then u else Unknown+                       , hdr_other_shit = hdr_other_shit a ++ hdr_other_shit b }  data BamSQ = BamSQ {         sq_name :: Seqid,
src/Bio/Bam/Index.hs view
@@ -18,8 +18,7 @@ import Bio.Bam.Regions              ( Region(..), Subsequence(..) ) import Bio.Iteratee import Bio.Prelude-import System.Directory             ( doesFileExist )-import System.FilePath              ( dropExtension, takeExtension, (<.>) )+import System.Posix.Files           ( fileExist )  import qualified Bio.Bam.Regions                as R import qualified Data.IntMap.Strict             as M@@ -145,15 +144,20 @@ -- two, and finally in the file itself.  The first file that exists and -- can actually be parsed, is used. readBamIndex :: FilePath -> IO (BamIndex ())-readBamIndex fp | takeExtension fp == ".bai" = enumFile defaultBufSize fp readBaiIndex >>= run-                | takeExtension fp == ".csi" = enumFile defaultBufSize fp readBaiIndex >>= run-                | otherwise = tryIx               (fp <.> "bai") $-                              tryIx (dropExtension fp <.> "bai") $-                              tryIx               (fp <.> "csi") $-                              tryIx (dropExtension fp <.> "csi") $+readBamIndex fp | ".bai" `isSuffixOf` fp = enumFile defaultBufSize fp readBaiIndex >>= run+                | ".csi" `isSuffixOf` fp = enumFile defaultBufSize fp readBaiIndex >>= run+                | otherwise = tryIx               (fp ++ ".bai") $+                              tryIx (dropExtension fp ++  "bai") $+                              tryIx               (fp ++ ".csi") $+                              tryIx (dropExtension fp ++  "csi") $                               enumFile defaultBufSize fp readBaiIndex >>= run   where-    tryIx f k = do e <- doesFileExist f+    dropExtension p = reverse $ (if null b then "." ++ f else b) ++ d+      where+        (f,d) = break (=='/') $ reverse p+        b     = dropWhile (/='.') f++    tryIx f k = do e <- fileExist f                    if e then do r <- enumFile defaultBufSize f readBaiIndex >>= tryRun                                 case r of Right                     ix -> return ix                                           Left (IterStringException _) -> k
src/Bio/Bam/Pileup.hs view
@@ -200,10 +200,13 @@                             , reads_mapq0      = 0                             , sum_mapq         = 0                             , sum_mapq_squared = 0 }-    mappend x y = CallStats { read_depth       = read_depth x + read_depth y-                            , reads_mapq0      = reads_mapq0 x + reads_mapq0 y-                            , sum_mapq         = sum_mapq x + sum_mapq y-                            , sum_mapq_squared = sum_mapq_squared x + sum_mapq_squared y }+    mappend     = (<>)++instance Semigroup CallStats where+    x <> y = CallStats { read_depth       = read_depth x + read_depth y+                       , reads_mapq0      = reads_mapq0 x + reads_mapq0 y+                       , sum_mapq         = sum_mapq x + sum_mapq y+                       , sum_mapq_squared = sum_mapq_squared x + sum_mapq_squared y }  newtype V_Nuc  = V_Nuc  (U.Vector Nucleotide)  deriving (Eq, Ord, Show) newtype V_Nucs = V_Nucs (U.Vector Nucleotides) deriving (Eq, Ord, Show)
src/Bio/Bam/Rec.hs view
@@ -50,6 +50,7 @@ import Bio.Bam.Header import Bio.Iteratee import Bio.Prelude+import Bio.Util.Storable  import Control.Monad.Primitive      ( unsafePrimToPrim, unsafeInlineIO ) import Foreign.C.Types              ( CInt(..), CSize(..) )@@ -81,21 +82,12 @@     sizeOf    _ = 4     alignment _ = 1 -    peek p = do w0 <- peekByteOff p 0 :: IO Word8-                w1 <- peekByteOff p 1 :: IO Word8-                w2 <- peekByteOff p 2 :: IO Word8-                w3 <- peekByteOff p 3 :: IO Word8-                let w = fromIntegral w0 `shiftL`  0 .|.  fromIntegral w1 `shiftL`  8 .|.-                        fromIntegral w2 `shiftL` 16 .|.  fromIntegral w3 `shiftL` 24+    peek p = do w <- fromIntegral <$> peekUnalnWord32LE p                 return $ toEnum (w .&. 0xf) :* shiftR w 4 -    poke p (op :* num) = do pokeByteOff p 0 (fromIntegral $ shiftR w  0 :: Word8)-                            pokeByteOff p 1 (fromIntegral $ shiftR w  8 :: Word8)-                            pokeByteOff p 2 (fromIntegral $ shiftR w 16 :: Word8)-                            pokeByteOff p 3 (fromIntegral $ shiftR w 24 :: Word8)-        where-            w = fromEnum op .|. shiftL num 4+    poke p (op :* num) = pokeUnalnWord32LE p . fromIntegral $ fromEnum op .|. shiftL num 4 + -- | Extracts the aligned length from a cigar line. -- This gives the length of an alignment as measured on the reference, -- which is different from the length on the query or the length of the@@ -235,13 +227,13 @@ {-# INLINE[1] unpackBam #-} unpackBam :: BamRaw -> BamRec unpackBam br = BamRec {-        b_rname =      Refseq $ getInt32  0,-        b_pos   =               getInt32  4,-        b_mapq  =           Q $ getInt8   9,-        b_flag  =               getInt16 14,-        b_mrnm  =      Refseq $ getInt32 20,-        b_mpos  =               getInt32 24,-        b_isize = fromIntegral (getInt32 28 :: Int32),+        b_rname =      Refseq $ getWord32  0,+        b_pos   =               getInt32   4,+        b_mapq  =           Q $ getInt8    9,+        b_flag  =               getInt16  14,+        b_mrnm  =      Refseq $ getWord32 20,+        b_mpos  =               getInt32  24,+        b_isize =               getInt32  28,          b_qname = B.unsafeTake l_read_name $ B.unsafeDrop 32 $ raw_data br,         b_cigar = VS.unsafeCast $ VS.unsafeFromForeignPtr fp (off0+off_c) (4*l_cigar),@@ -257,29 +249,27 @@         off_q = off_s + (l_seq + 1) `div` 2         off_e = off_q +  l_seq -        l_read_name = getInt8   8 - 1-        l_seq       = getInt32 16-        l_cigar     = getInt16 12+        l_read_name = getInt8    8 - 1+        l_seq       = getWord32 16+        l_cigar     = getInt16  12          getInt8 :: Num a => Int -> a         getInt8  o = fromIntegral (B.unsafeIndex (raw_data br) o) -        getInt16 :: (Num a, Bits a) => Int -> a-        getInt16 o = fromIntegral (B.unsafeIndex (raw_data br) o) .|.-                     fromIntegral (B.unsafeIndex (raw_data br) $ o+1) `shiftL`  8+        getInt16 :: Num a => Int -> a+        getInt16 o = unsafeDupablePerformIO $ B.unsafeUseAsCString (raw_data br) $+                     fmap fromIntegral . peekUnalnWord16LE . flip plusPtr o -        getInt32 :: (Num a, Bits a) => Int -> a-        getInt32 o = fromIntegral (        B.unsafeIndex (raw_data br) $ o+0 )             .|.-                     fromIntegral (        B.unsafeIndex (raw_data br) $ o+1 ) `shiftL`  8 .|.-                     fromIntegral (        B.unsafeIndex (raw_data br) $ o+2 ) `shiftL` 16 .|.-                     fromIntegral (signed (B.unsafeIndex (raw_data br) $ o+3)) `shiftL` 24+        getWord32 :: Num a => Int -> a+        getWord32 o = unsafeDupablePerformIO $ B.unsafeUseAsCString (raw_data br) $+                      fmap fromIntegral . peekUnalnWord32LE . flip plusPtr o -        signed :: Word8 -> Int8-        signed = fromIntegral+        -- ensures proper sign extension+        getInt32 :: Num a => Int -> a+        getInt32 o = fromIntegral (getWord32 o :: Int32) --- | A collection of extension fields.  The key is actually only two @Char@s, but that proved impractical.--- (Hmm... we could introduce a Key type that is a 16 bit int, then give--- it an @instance IsString@... practical?)+-- | A collection of extension fields.  A 'BamKey' is actually two ASCII+-- characters. type Extensions = [( BamKey, Ext )]  -- | Deletes all occurences of some extension field.@@ -337,16 +327,14 @@      getInt 'C' s | S.length s >= 1 = fromIntegral (fromIntegral (B.index s 0) :: Word8)     getInt 'c' s | S.length s >= 1 = fromIntegral (fromIntegral (B.index s 0) ::  Int8)-    getInt 'S' s | S.length s >= 2 = fromIntegral                               (i :: Word16)-        where i = fromIntegral (B.index s 0) .|. fromIntegral (B.index s 1) `shiftL` 8-    getInt 's' s | S.length s >= 2 = fromIntegral                               (i ::  Int16)-        where i = fromIntegral (B.index s 0) .|. fromIntegral (B.index s 1) `shiftL` 8-    getInt 'I' s | S.length s >= 4 = fromIntegral                               (i :: Word32)-        where i = fromIntegral (B.index s 0)             .|. fromIntegral (B.index s 1) `shiftL`  8 .|.-                  fromIntegral (B.index s 2) `shiftL` 16 .|. fromIntegral (B.index s 3) `shiftL` 24-    getInt 'i' s | S.length s >= 4 = fromIntegral                               (i ::  Int32)-        where i = fromIntegral (B.index s 0)             .|. fromIntegral (B.index s 1) `shiftL`  8 .|.-                  fromIntegral (B.index s 2) `shiftL` 16 .|. fromIntegral (B.index s 3) `shiftL` 24+    getInt 'S' s | S.length s >= 2 = fromIntegral                         (i :: Word16)+        where i = unsafeDupablePerformIO $ B.unsafeUseAsCString s $ peekUnalnWord16LE+    getInt 's' s | S.length s >= 2 = fromIntegral            (fromIntegral i ::  Int16)+        where i = unsafeDupablePerformIO $ B.unsafeUseAsCString s $ peekUnalnWord16LE+    getInt 'I' s | S.length s >= 4 = fromIntegral                         (i :: Word32)+        where i = unsafeDupablePerformIO $ B.unsafeUseAsCString s $ peekUnalnWord32LE+    getInt 'i' s | S.length s >= 4 = fromIntegral            (fromIntegral i ::  Int32)+        where i = unsafeDupablePerformIO $ B.unsafeUseAsCString s $ peekUnalnWord32LE     getInt _ _ = 0      getFloat s = unsafeDupablePerformIO $ alloca $ \buf ->
src/Bio/Bam/Trim.hs view
@@ -192,8 +192,8 @@  mergeBam :: Int -> Int -> [W.Vector Nucleotides] -> [W.Vector Nucleotides] -> BamRec -> BamRec -> [BamRec] mergeBam lowq highq ads1 ads2 r1 r2-    | V.null (b_seq r1) && V.null (b_seq r2) = [ r1', r2'     ]-    | qual1 < lowq                           = [ r1', r2'     ]+    | V.null (b_seq r1) && V.null (b_seq r2) = [              ]+    | qual1 < lowq || mlen < 0               = [ r1', r2'     ]     | qual1 >= highq && mlen == 0            = [              ]     | qual1 >= highq                         = [           rm ]     | mlen < len_r1-20 || mlen < len_r2-20   = [           rm ]@@ -279,9 +279,9 @@ -- and two qualities). trimBam :: Int -> Int -> [W.Vector Nucleotides] -> BamRec -> [BamRec] trimBam lowq highq ads1 r1-    | V.null (b_seq r1)              = [ r1'      ]+    | V.null (b_seq r1)              = [          ]     | mlen == 0 && qual1 >= highq    = [          ]-    | qual1 < lowq                   = [ r1'      ]+    | qual1 < lowq || mlen < 0       = [ r1'      ]     | qual1 >= highq                 = [      r1t ]     | otherwise = map flag_alternative [ r1', r1t ]   where@@ -417,7 +417,7 @@  {-# INLINE twoMins #-} twoMins :: (Bounded a, Ord a) => a -> Int -> (Int -> a) -> (a,Int,a)-twoMins a0 imax f = go a0 0 maxBound 0 0+twoMins a0 imax f = go a0 (-1) maxBound 0 0   where     go !m1 !i1 !m2 !i2 !i         | i == imax = (m1,i1,m2)
src/Bio/Base.hs view
@@ -46,8 +46,7 @@ import Bio.Util.Numeric             ( log1pexp, log1mexp ) import Data.ByteString.Internal     ( c2w, w2c ) import Data.Vector.Unboxed.Deriving ( derivingUnbox )-import System.Directory             ( doesFileExist )-import System.FilePath              ( (</>), isAbsolute, splitSearchPath )+import System.Posix.Files           ( fileExist )  import qualified Data.ByteString.Char8 as S import qualified Data.Vector.Unboxed   as U@@ -360,10 +359,11 @@ -- | Finds a file by searching the environment variable BIOHAZARD like a -- PATH. findAuxFile :: FilePath -> IO FilePath-findAuxFile fn | isAbsolute fn = return fn-               | otherwise = go . maybe ["."] splitSearchPath . lookup "BIOHAZARD" =<< getEnvironment+findAuxFile fn | "/" `isPrefixOf` fn = return fn+               | otherwise = go . fromMaybe "." . lookup "BIOHAZARD" =<< getEnvironment   where-    go [    ] = return fn-    go (p:ps) = doesFileExist (p </> fn) >>=-                bool (return $ p </> fn) (go ps)+    go "" = return fn+    go pp = let (p,ps) = break (==':') pp+            in fileExist (p ++ "/" ++ fn) >>=+               bool (return $ p ++ "/" ++ fn) (go $ drop 1 ps) 
src/Bio/Iteratee/Base.hs view
@@ -1,4 +1,4 @@-{-# LANGUAGE TypeFamilies,UndecidableInstances,Rank2Types,ExistentialQuantification #-}+{-# LANGUAGE Rank2Types #-}  -- |Monadic Iteratees: -- incremental input parsers, processors and transformers@@ -76,11 +76,16 @@   (EOF (Just e1)) == (EOF (Just e2)) = typeOf e1 == typeOf e2   _ == _                             = False +instance Semigroup c => Semigroup (Stream c) where+  EOF mErr <>        _ = EOF mErr+  _        <> EOF mErr = EOF mErr+  Chunk s1 <> Chunk s2 = Chunk (s1 <> s2)+ instance Monoid c => Monoid (Stream c) where-  mempty                        = Chunk mempty-  mappend (EOF mErr)         _  = EOF mErr-  mappend         _  (EOF mErr) = EOF mErr-  mappend (Chunk s1) (Chunk s2) = Chunk (s1 `mappend` s2)+  mempty                      = Chunk mempty+  EOF mErr `mappend`        _ = EOF mErr+  _        `mappend` EOF mErr = EOF mErr+  Chunk s1 `mappend` Chunk s2 = Chunk (mappend s1 s2)  -- |Map a function over a stream. instance Functor Stream where@@ -154,15 +159,14 @@     => Iteratee s m a     -> (a -> Iteratee s m b)     -> Iteratee s m b-bindIteratee = self-    where-        self m f = Iteratee $ \onDone onCont ->-             let m_done a (Chunk s)-                   | nullC s     = runIter (f a) onDone onCont-                 m_done a stream = runIter (f a) (const . flip onDone stream) f_cont-                   where f_cont k Nothing = runIter (k stream) onDone onCont-                         f_cont k e       = onCont k e-             in runIter m m_done (onCont . (flip self f .))+bindIteratee m f = Iteratee $ \onDone onCont ->+    let m_done a (Chunk s)+          | nullC s     = runIter (f a) onDone onCont+        m_done a stream = runIter (f a) (const . flip onDone stream) f_cont+          where f_cont k Nothing = runIter (k stream) onDone onCont+                f_cont k e       = onCont k e+    in runIter m m_done (onCont . (flip bindIteratee f .))+  instance NullPoint s => MonadTrans (Iteratee s) where   lift m = Iteratee $ \onDone _ -> m >>= flip onDone (Chunk emptyP)
src/Bio/Iteratee/Bgzf.hsc view
@@ -34,9 +34,14 @@  instance Monoid Block where     mempty = Block 0 S.empty-    mappend (Block x s) (Block _ t) = Block x (s `S.append` t)+    mappend = (<>)     mconcat [] = Block 0 S.empty     mconcat bs@(Block x _:_) = Block x $ S.concat [s|Block _ s <- bs]++instance Semigroup Block where+    Block x s <> Block _ t = Block x (s `S.append` t)+    sconcat (Block x b :| bs) = Block x . sconcat $ b :| map block_contents bs+  -- | "Decompresses" a plain file.  What's actually happening is that the -- offset in the input stream is tracked and added to the @Bytes@s
src/Bio/Iteratee/Exception.hs view
@@ -1,4 +1,4 @@-{-# LANGUAGE DeriveDataTypeable, ExistentialQuantification #-}+{-# LANGUAGE ExistentialQuantification #-}  -- |Monadic and General Iteratees: -- Messaging and exception handling.
src/Bio/Iteratee/IO.hs view
@@ -10,18 +10,18 @@   ,enumFileRandom   -- * FileDescriptor based enumerators for monadic iteratees   ,enumFd-  ,enumFdCatch   ,enumFdRandom ) where  import Bio.Iteratee.Iteratee-import Bio.Prelude hiding ( bracket )+import Bio.Prelude hiding ( bracket, loop ) import Control.Monad.Catch import Control.Monad.IO.Class-import Data.ByteString.Internal (createAndTrim) import System.IO (SeekMode(..)) +import qualified Data.ByteString as B+ -- | Default buffer size in elements.  This was 1024 in "Data.Iteratee", -- which is obviously too small.  Since we often want to merge many -- files, a read should take more time than a seek.  This sets the@@ -29,37 +29,40 @@ defaultBufSize :: Int defaultBufSize = 2*1024*1024 --- --------------------------------------------------------------------------- Binary Random IO enumerators--makefdCallback :: MonadIO m => Int -> Fd -> st -> m (Either SomeException ((Bool, st), Bytes))-makefdCallback bufsize fd st = do-  s <- liftIO . createAndTrim bufsize $ \p ->-       fromIntegral <$> fdReadBuf fd (castPtr p) (fromIntegral bufsize)-  return $ Right ((True, st), s)- -- |The enumerator of a POSIX File Descriptor.  This version enumerates -- over the entire contents of a file, in order, unless stopped by -- the iteratee.  In particular, seeking is not supported. enumFd :: MonadIO m => Int -> Fd -> Enumerator Bytes m a-enumFd bufsize fd = enumFromCallback (makefdCallback bufsize fd) ()+enumFd bufsize fd = loop+  where+    loop iter = runIter iter idoneM onCont --- |A variant of enumFd that catches exceptions raised by the @Iteratee@.-enumFdCatch- :: (IException e, MonadIO m)-    => Int-    -> Fd-    -> (e -> m (Maybe EnumException))-    -> Enumerator Bytes m a-enumFdCatch bufsize fd handler = enumFromCallbackCatch (makefdCallback bufsize fd) handler ()+    onCont k j@(Just _) = return (icont k j)+    onCont k   Nothing  = do+        s <- liftIO $ fdGet bufsize fd+        if B.null s then return $ liftI k+                    else loop . k $ Chunk s + -- |The enumerator of a POSIX File Descriptor: a variation of @enumFd@ that -- supports RandomIO (seek requests). enumFdRandom :: MonadIO m => Int -> Fd -> Enumerator Bytes m a-enumFdRandom bs fd = enumFdCatch bs fd handler+enumFdRandom bs fd = loop   where-    handler (SeekException off) =-        liftIO $ fdSeek fd AbsoluteSeek (fromIntegral off) >> return Nothing+    loop iter = runIter iter idoneM onCont++    onCont k Nothing  = do+        s <- liftIO $ fdGet bs fd+        if B.null s then return $ liftI k+                    else loop . k $ Chunk s++    onCont k j@(Just e) = case fromException e of+      Just (SeekException off) -> do+                   liftIO . void $ fdSeek fd AbsoluteSeek (fromIntegral off)+                   loop $ liftI k+      Nothing -> return (icont k j)++  enumFile' :: (MonadIO m, MonadMask m) =>   (Int -> Fd -> Enumerator s m a)
src/Bio/Iteratee/Iteratee.hs view
@@ -1,8 +1,4 @@-{-# LANGUAGE KindSignatures-            ,RankNTypes-            ,FlexibleContexts-            ,ScopedTypeVariables-            ,DeriveDataTypeable #-}+{-# LANGUAGE Rank2Types, FlexibleContexts #-}  -- |Monadic and General Iteratees: -- incremental input parsers, processors and transformers@@ -187,7 +183,7 @@ -- The converters show a different way of composing two iteratees: -- `vertical' rather than `horizontal' -type Enumeratee sFrom sTo (m :: * -> *) a =+type Enumeratee sFrom sTo m a =   Iteratee sTo m a   -> Iteratee sFrom m (Iteratee sTo m a) @@ -543,17 +539,14 @@   (st -> m (Either SomeException ((Bool, st), s)))   -> st   -> Enumerator s m a-enumFromCallback c =-  enumFromCallbackCatch c (\NotAnException -> return Nothing)---- Dummy exception to catch in enumFromCallback--- This never gets thrown, but it lets us--- share plumbing-data NotAnException = NotAnException- deriving (Show, Typeable)--instance Exception NotAnException where-instance IException NotAnException where+enumFromCallback c = loop+  where+    loop st iter = runIter iter idoneM (onCont st)+    check k (True,  st') = loop st' . k . Chunk+    check k (False,_st') = return . k . Chunk+    onCont st k Nothing  = c st >>=+        either (return . k . EOF . Just) (uncurry (check k))+    onCont _st k j = return (icont k j)  -- |Create an enumerator from a callback function with an exception handler. -- The exception handler is called if an iteratee reports an exception.
src/Bio/Iteratee/List.hs view
@@ -1,5 +1,3 @@-{-# LANGUAGE TupleSections, ScopedTypeVariables #-}- -- |Monadic Iteratees: -- incremental input parsers, processors and transformers --@@ -602,8 +600,8 @@     (b', y') <- lift $ runIter y0 od oc     case checkDone a' b' of       Just (Right (a,b,s))  -> idone (a,b) s  -- 's' may be EOF, needs to stay-      Just (Left (Left a))  -> liftM (a,) y'-      Just (Left (Right b)) -> liftM (,b) x'+      Just (Left (Left a))  -> liftM ((,) a) y'+      Just (Left (Right b)) -> liftM (flip (,) b) x'       Nothing               -> liftI (step x' y')   where     step x y (Chunk xs) | nullC xs = liftI (step x y)@@ -612,8 +610,8 @@       (b', y') <- lift $ (\i -> runIter i od oc) =<< enumPure1Chunk xs y       case checkDone a' b' of         Just (Right (a,b,s))  -> idone (a,b) s-        Just (Left (Left a))  -> liftM (a,) y'-        Just (Left (Right b)) -> liftM (,b) x'+        Just (Left (Left a))  -> liftM ((,) a) y'+        Just (Left (Right b)) -> liftM (flip (,) b) x'         Nothing               -> liftI (step x' y')     step x y (EOF err) = joinIM $ case err of       Nothing -> (liftM2.liftM2) (,) (enumEof   x) (enumEof   y)@@ -683,7 +681,7 @@     (a', x') <- lift $ runIter i1 od oc     (_,  y') <- lift $ runIter i2 od oc     case a' of-      Just (a, s) -> flip idone s =<< lift (liftM (a,) $ run i2)+      Just (a, s) -> flip idone s =<< lift (liftM ((,) a) $ run i2)       Nothing     -> go x' y'   where     od a s = return (Just (a, s), idone a s)@@ -761,7 +759,7 @@ countConsumed :: (Monad m, Integral n) => Iteratee [el] m a -> Iteratee [el] m (a, n) countConsumed i = go 0 (const i) (Chunk emptyP)   where-    go !n f str@(EOF _) = (, n) `liftM` f str+    go !n f str@(EOF _) = flip (,) n `liftM` f str     go !n f str@(Chunk c) = Iteratee rI       where         newLen = n + fromIntegral (length c)
src/Bio/Prelude.hs view
@@ -1,7 +1,9 @@-{-# LANGUAGE CPP, TypeOperators #-}+{-# LANGUAGE CPP #-} module Bio.Prelude (     module Bio.Base,     module BasePrelude,+    module Data.List.NonEmpty,+    module Data.Semigroup,     module System.IO,     module System.Posix.Files,     module System.Posix.IO,@@ -14,11 +16,6 @@     IntSet,     Text, LazyText,     Pair(..),-#ifndef __HADDOCK__-#ifdef __GLASGOW_HASKELL__-    (:!:),-#endif-#endif  #if !MIN_VERSION_base(4,8,0)     first,@@ -30,6 +27,7 @@      Hashable(..),     Unpack(..),+    fdGet,     fdPut,     fdPutLazy,     withFd@@ -37,9 +35,9 @@  import BasePrelude #if MIN_VERSION_base(4,9,0)-                    hiding ( EOF, log1p, log1pexp, log1mexp, expm1 )+                    hiding ( (<>), EOF, log1p, log1pexp, log1mexp, expm1 ) #else-                    hiding ( EOF )+                    hiding ( (<>), EOF ) #endif  #if !MIN_VERSION_base(4,8,0)@@ -49,6 +47,9 @@  import Bio.Base import Data.ByteString     ( ByteString )+import Data.ByteString.Internal ( createAndTrim )+import Data.List.NonEmpty  ( NonEmpty(..) )+import Data.Semigroup      ( Semigroup(..) ) import Data.Text           ( Text ) import Data.Hashable       ( Hashable(..) ) import Data.HashMap.Strict ( HashMap )@@ -77,13 +78,6 @@ -- | A strict pair. data Pair a b = !a :!: !b deriving(Eq, Ord, Show, Read, Bounded, Ix) -#ifndef __HADDOCK__-#ifdef __GLASGOW_HASKELL__--- This gives a nicer syntax for the type but only works in GHC for now.-type (:!:) = Pair-#endif-#endif- -- | Class of things that can be unpacked into 'String's.  Kind of the -- opposite of 'IsString'. class Unpack s where unpack :: s -> String@@ -91,6 +85,13 @@ instance Unpack ByteString where unpack = S.unpack instance Unpack Text       where unpack = T.unpack instance Unpack String     where unpack = id++-- | @fdGet bs fd@ reads up to @bs@ 'Bytes' from file descriptor @Fd@.+-- Returns an empty 'Bytes' at end of file.+fdGet :: Int -> Fd -> IO Bytes+fdGet bs fd =+    createAndTrim bs $ \p ->+        fromIntegral <$> fdReadBuf fd (castPtr p) (fromIntegral bs)  fdPut :: Fd -> Bytes -> IO () fdPut fd s = B.unsafeUseAsCStringLen s $ \(p,l) ->
src/Bio/TwoBit.hs view
@@ -35,13 +35,14 @@  import           Bio.Prelude hiding ( left, right, chr ) import           Bio.Util.MMap-import           Data.Binary.Get+import           Bio.Util.Storable+import           Control.Monad.Trans.State import qualified Data.ByteString                as B-import qualified Data.ByteString.Lazy           as L+import qualified Data.ByteString.Unsafe         as B import qualified Data.IntMap.Strict             as I import qualified Data.HashMap.Lazy              as M import qualified Data.Vector.Unboxed            as U-import           System.Random+import           Foreign.C.Types ( CChar )  data TwoBitFile = TBF {     tbf_raw :: B.ByteString,@@ -60,11 +61,13 @@ openTwoBit :: FilePath -> IO TwoBitFile openTwoBit fp = do         raw <- unsafeMMapFile fp-        return $ flip runGet (L.fromChunks [raw]) $ do+        B.unsafeUseAsCString raw $ \praw ->+        -- return $ flip runGet (L.fromChunks [raw]) $ do+            flip evalStateT praw $ do                     sig <- getWord32be-                    getWord32 <- case sig of-                            0x1A412743 -> return $ fromIntegral `fmap` getWord32be-                            0x4327411A -> return $ fromIntegral `fmap` getWord32le+                    getWord32 <- case sig :: Word32 of+                            0x1A412743 -> return getWord32be+                            0x4327411A -> return getWord32le                             _          -> fail $ "invalid .2bit signature " ++ showHex sig []                      version <- getWord32@@ -73,19 +76,34 @@                     nseqs <- getWord32                     _reserved <- getWord32 -                    TBF raw <$> foldM (\ix _ -> do !key <- getWord8 >>= getByteString . fromIntegral+                    TBF raw <$> foldM (\ix _ -> do !key <- getWord8 >>= getByteString                                                    !off <- getWord32                                                    return $! M.insert key (mkBlockIndex raw getWord32 off) ix                                       ) M.empty [1..nseqs] +type Get = StateT (Ptr CChar) IO++getWord8, getWord32be, getWord32le :: Num a => Get a+getWord8    = StateT $ \p -> peekUnalnWord32BE  p >>= \w -> return (fromIntegral w, plusPtr p 1)+getWord32be = StateT $ \p -> peekUnalnWord32BE  p >>= \w -> return (fromIntegral w, plusPtr p 4)+getWord32le = StateT $ \p -> peekUnalnWord32LE  p >>= \w -> return (fromIntegral w, plusPtr p 4)++getByteString :: Int -> Get Bytes+getByteString l = StateT $ \p -> B.packCStringLen (p,l) >>= \s -> return (s, plusPtr p l)+ mkBlockIndex :: B.ByteString -> Get Int -> Int -> TwoBitSequence-mkBlockIndex raw getWord32 ofs = runGet getBlock $ L.fromChunks [B.drop ofs raw]+mkBlockIndex raw getWord32 ofs =+    unsafePerformIO $+    B.unsafeUseAsCString raw $ \praw ->+    evalStateT getBlock (plusPtr praw ofs)   where-    getBlock = do ds <- getWord32+    getBlock = do p0 <- get+                  ds <- getWord32                   nb <- readBlockList                   mb <- readBlockList-                  len <- getWord32 >> bytesRead-                  return $! TBS (I.fromList nb) (I.fromList mb) (ofs + fromIntegral len) ds+                  _  <- getWord32+                  p1 <- get+                  return $! TBS (I.fromList nb) (I.fromList mb) (ofs + minusPtr p1 p0) ds      readBlockList = getWord32 >>= \n -> liftM2 zip (repM n getWord32) (repM n getWord32) @@ -222,11 +240,12 @@ -- On a 32bit platform, this will fail for genomes larger than 1G bases. -- However, if you're running this code on a 32bit platform, you have -- bigger problems to worry about.-getRandomSeq :: RandomGen g => TwoBitFile                   -- ^ 2bit file-                            -> Int                          -- ^ desired length-                            -> g                            -- ^ RNG-                            -> ((Range, [Nucleotide]), g)   -- ^ position, sequence, new RNG-getRandomSeq tbf len = draw+getRandomSeq :: TwoBitFile                   -- ^ 2bit file+             -> Int                          -- ^ desired length+             -> (Int -> g -> (Int, g))       -- ^ draw random int below limit+             -> g                            -- ^ RNG+             -> ((Range, [Nucleotide]), g)   -- ^ position, sequence, new RNG+getRandomSeq tbf len rndInt = draw   where     names = getSeqnames tbf     lengths = map (getSeqLength tbf) names@@ -236,7 +255,7 @@     draw g0 | good      = ((r', sq), gn)             | otherwise = draw gn       where-        (p0, gn) = randomR (0, 2*total-1) g0+        (p0, gn) = rndInt (2*total) g0         p = p0 `shiftR` 1         Just ((o,s),_) = I.maxViewWithKey $ fst $ I.split (p+1) frags         r' = (if odd p0 then id else reverseRange) $ clampPosition tbf $ Range (Pos s (p-o)) len
+ src/Bio/Util/Storable.hs view
@@ -0,0 +1,101 @@+{-# LANGUAGE CPP #-}+-- | Utilities to read multibyte quantities from arbitrary positions.+module Bio.Util.Storable+    ( peekWord8+    , peekUnalnWord16LE+    , peekUnalnWord16BE+    , peekUnalnWord32LE+    , peekUnalnWord32BE+    , pokeUnalnWord32LE+    ) where++#if __GLASGOW_HASKELL__ >= 710+#define HAVE_BYTESWAP_PRIMOPS+#endif++#if i386_HOST_ARCH || x86_64_HOST_ARCH+#define MEM_UNALIGNED_OPS+#endif++import Bio.Prelude++#if defined(HAVE_BYTESWAP_PRIMOPS)+import GHC.Word ( byteSwap16, byteSwap32 )+#endif++peekWord8 :: Ptr a -> IO Word8+peekWord8 = peek . castPtr++#if defined(MEM_UNALIGNED_OPS) && defined(WORDS_BIGENDIAN) && defined(HAVE_BYTESWAP_PRIMOPS)+peekUnalnWord16LE :: Ptr a -> IO Word16+peekUnalnWord16LE = fmap byteSwap16 . peek . castPtr++peekUnalnWord32LE :: Ptr a -> IO Word32+peekUnalnWord32LE = fmap byteSwap32 . peek . castPtr++pokeUnalnWord32LE :: Ptr a -> Word32 -> IO ()+pokeUnalnWord32LE p w = poke (castPtr p) (byteSwap32 w)++#elif defined(MEM_UNALIGNED_OPS) && !defined(WORDS_BIGENDIAN)+peekUnalnWord16LE :: Ptr a -> IO Word16+peekUnalnWord16LE = peek . castPtr++peekUnalnWord32LE :: Ptr a -> IO Word32+peekUnalnWord32LE = peek . castPtr++pokeUnalnWord32LE :: Ptr a -> Word32 -> IO ()+pokeUnalnWord32LE p w = poke (castPtr p) w++#else+peekUnalnWord16LE :: Ptr a -> IO Word16+peekUnalnWord16LE p = do+    x <- fromIntegral <$> peekWord8 (plusPtr p 0)+    y <- fromIntegral <$> peekWord8 (plusPtr p 1)+    return $! x .|. unsafeShiftL y 8++peekUnalnWord32LE :: Ptr a -> IO Word32+peekUnalnWord32LE p = do+    x <- fromIntegral <$> peekWord8 (plusPtr p 0)+    y <- fromIntegral <$> peekWord8 (plusPtr p 1)+    z <- fromIntegral <$> peekWord8 (plusPtr p 2)+    w <- fromIntegral <$> peekWord8 (plusPtr p 3)+    return $! x .|. unsafeShiftL y 8 .|. unsafeShiftL z 16 .|. unsafeShiftL w 24++pokeUnalnWord32LE :: Ptr a -> Word32 -> IO ()+pokeUnalnWord32LE p w = do pokeByteOff p 0 (fromIntegral $ shiftR w  0 :: Word8)+                           pokeByteOff p 1 (fromIntegral $ shiftR w  8 :: Word8)+                           pokeByteOff p 2 (fromIntegral $ shiftR w 16 :: Word8)+                           pokeByteOff p 3 (fromIntegral $ shiftR w 24 :: Word8)+#endif+++#if defined(MEM_UNALIGNED_OPS) && !defined(WORDS_BIGENDIAN) && defined(HAVE_BYTESWAP_PRIMOPS)+peekUnalnWord16BE :: Ptr a -> IO Word16+peekUnalnWord16BE = fmap byteSwap16 . peek . castPtr++peekUnalnWord32BE :: Ptr a -> IO Word32+peekUnalnWord32BE = fmap byteSwap32 . peek . castPtr++#elif defined(MEM_UNALIGNED_OPS) && defined(WORDS_BIGENDIAN)+peekUnalnWord16BE :: Ptr a -> IO Word16+peekUnalnWord16BE = peek . castPtr++peekUnalnWord32BE :: Ptr a -> IO Word32+peekUnalnWord32BE = peek . castPtr++#else+peekUnalnWord16BE :: Ptr a -> IO Word16+peekUnalnWord16BE p = do+    x <- fromIntegral <$> peekWord8 (plusPtr p 0)+    y <- fromIntegral <$> peekWord8 (plusPtr p 1)+    return $! y .|. unsafeShiftL x 8++peekUnalnWord32BE :: Ptr a -> IO Word32+peekUnalnWord32BE p = do+    x <- fromIntegral <$> peekWord8 (plusPtr p 0)+    y <- fromIntegral <$> peekWord8 (plusPtr p 1)+    z <- fromIntegral <$> peekWord8 (plusPtr p 2)+    w <- fromIntegral <$> peekWord8 (plusPtr p 3)+    return $! w .|. unsafeShiftL z 8 .|. unsafeShiftL y 16 .|. unsafeShiftL x 24+#endif+