{-# OPTIONS_GHC -fno-warn-orphans #-} module Bio.NucleicAcid.Chain where import Bio.Chain as C import Bio.NucleicAcid.Nucleotide import Control.Lens import Data.Array (Ix (..)) import Data.String (IsString (..)) newtype NucleicAcidChain i a = NucleicAcidChain { NucleicAcidChain i a -> Chain i a getChain :: Chain i a } deriving (Int -> NucleicAcidChain i a -> ShowS [NucleicAcidChain i a] -> ShowS NucleicAcidChain i a -> String (Int -> NucleicAcidChain i a -> ShowS) -> (NucleicAcidChain i a -> String) -> ([NucleicAcidChain i a] -> ShowS) -> Show (NucleicAcidChain i a) forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a forall i a. (Ix i, Show i, Show a) => Int -> NucleicAcidChain i a -> ShowS forall i a. (Ix i, Show i, Show a) => [NucleicAcidChain i a] -> ShowS forall i a. (Ix i, Show i, Show a) => NucleicAcidChain i a -> String showList :: [NucleicAcidChain i a] -> ShowS $cshowList :: forall i a. (Ix i, Show i, Show a) => [NucleicAcidChain i a] -> ShowS show :: NucleicAcidChain i a -> String $cshow :: forall i a. (Ix i, Show i, Show a) => NucleicAcidChain i a -> String showsPrec :: Int -> NucleicAcidChain i a -> ShowS $cshowsPrec :: forall i a. (Ix i, Show i, Show a) => Int -> NucleicAcidChain i a -> ShowS Show, NucleicAcidChain i a -> NucleicAcidChain i a -> Bool (NucleicAcidChain i a -> NucleicAcidChain i a -> Bool) -> (NucleicAcidChain i a -> NucleicAcidChain i a -> Bool) -> Eq (NucleicAcidChain i a) forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a forall i a. (Ix i, Eq a) => NucleicAcidChain i a -> NucleicAcidChain i a -> Bool /= :: NucleicAcidChain i a -> NucleicAcidChain i a -> Bool $c/= :: forall i a. (Ix i, Eq a) => NucleicAcidChain i a -> NucleicAcidChain i a -> Bool == :: NucleicAcidChain i a -> NucleicAcidChain i a -> Bool $c== :: forall i a. (Ix i, Eq a) => NucleicAcidChain i a -> NucleicAcidChain i a -> Bool Eq, a -> NucleicAcidChain i b -> NucleicAcidChain i a (a -> b) -> NucleicAcidChain i a -> NucleicAcidChain i b (forall a b. (a -> b) -> NucleicAcidChain i a -> NucleicAcidChain i b) -> (forall a b. a -> NucleicAcidChain i b -> NucleicAcidChain i a) -> Functor (NucleicAcidChain i) forall a b. a -> NucleicAcidChain i b -> NucleicAcidChain i a forall a b. (a -> b) -> NucleicAcidChain i a -> NucleicAcidChain i b forall i a b. a -> NucleicAcidChain i b -> NucleicAcidChain i a forall i a b. (a -> b) -> NucleicAcidChain i a -> NucleicAcidChain i b forall (f :: * -> *). (forall a b. (a -> b) -> f a -> f b) -> (forall a b. a -> f b -> f a) -> Functor f <$ :: a -> NucleicAcidChain i b -> NucleicAcidChain i a $c<$ :: forall i a b. a -> NucleicAcidChain i b -> NucleicAcidChain i a fmap :: (a -> b) -> NucleicAcidChain i a -> NucleicAcidChain i b $cfmap :: forall i a b. (a -> b) -> NucleicAcidChain i a -> NucleicAcidChain i b Functor, a -> NucleicAcidChain i a -> Bool NucleicAcidChain i m -> m NucleicAcidChain i a -> [a] NucleicAcidChain i a -> Bool NucleicAcidChain i a -> Int NucleicAcidChain i a -> a NucleicAcidChain i a -> a NucleicAcidChain i a -> a NucleicAcidChain i a -> a (a -> m) -> NucleicAcidChain i a -> m (a -> m) -> NucleicAcidChain i a -> m (a -> b -> b) -> b -> NucleicAcidChain i a -> b (a -> b -> b) -> b -> NucleicAcidChain i a -> b (b -> a -> b) -> b -> NucleicAcidChain i a -> b (b -> a -> b) -> b -> NucleicAcidChain i a -> b (a -> a -> a) -> NucleicAcidChain i a -> a (a -> a -> a) -> NucleicAcidChain i a -> a (forall m. Monoid m => NucleicAcidChain i m -> m) -> (forall m a. Monoid m => (a -> m) -> NucleicAcidChain i a -> m) -> (forall m a. Monoid m => (a -> m) -> NucleicAcidChain i a -> m) -> (forall a b. (a -> b -> b) -> b -> NucleicAcidChain i a -> b) -> (forall a b. (a -> b -> b) -> b -> NucleicAcidChain i a -> b) -> (forall b a. (b -> a -> b) -> b -> NucleicAcidChain i a -> b) -> (forall b a. (b -> a -> b) -> b -> NucleicAcidChain i a -> b) -> (forall a. (a -> a -> a) -> NucleicAcidChain i a -> a) -> (forall a. (a -> a -> a) -> NucleicAcidChain i a -> a) -> (forall a. NucleicAcidChain i a -> [a]) -> (forall a. NucleicAcidChain i a -> Bool) -> (forall a. NucleicAcidChain i a -> Int) -> (forall a. Eq a => a -> NucleicAcidChain i a -> Bool) -> (forall a. Ord a => NucleicAcidChain i a -> a) -> (forall a. Ord a => NucleicAcidChain i a -> a) -> (forall a. Num a => NucleicAcidChain i a -> a) -> (forall a. Num a => NucleicAcidChain i a -> a) -> Foldable (NucleicAcidChain i) forall a. Eq a => a -> NucleicAcidChain i a -> Bool forall a. Num a => NucleicAcidChain i a -> a forall a. Ord a => NucleicAcidChain i a -> a forall m. Monoid m => NucleicAcidChain i m -> m forall a. NucleicAcidChain i a -> Bool forall a. NucleicAcidChain i a -> Int forall a. NucleicAcidChain i a -> [a] forall a. (a -> a -> a) -> NucleicAcidChain i a -> a forall i a. Eq a => a -> NucleicAcidChain i a -> Bool forall i a. Num a => NucleicAcidChain i a -> a forall i a. Ord a => NucleicAcidChain i a -> a forall m a. Monoid m => (a -> m) -> NucleicAcidChain i a -> m forall i m. Monoid m => NucleicAcidChain i m -> m forall i a. NucleicAcidChain i a -> Bool forall i a. NucleicAcidChain i a -> Int forall i a. NucleicAcidChain i a -> [a] forall b a. (b -> a -> b) -> b -> NucleicAcidChain i a -> b forall a b. (a -> b -> b) -> b -> NucleicAcidChain i a -> b forall i a. (a -> a -> a) -> NucleicAcidChain i a -> a forall i m a. Monoid m => (a -> m) -> NucleicAcidChain i a -> m forall i b a. (b -> a -> b) -> b -> NucleicAcidChain i a -> b forall i a b. (a -> b -> b) -> b -> NucleicAcidChain i a -> b forall (t :: * -> *). (forall m. Monoid m => t m -> m) -> (forall m a. Monoid m => (a -> m) -> t a -> m) -> (forall m a. Monoid m => (a -> m) -> t a -> m) -> (forall a b. (a -> b -> b) -> b -> t a -> b) -> (forall a b. (a -> b -> b) -> b -> t a -> b) -> (forall b a. (b -> a -> b) -> b -> t a -> b) -> (forall b a. (b -> a -> b) -> b -> t a -> b) -> (forall a. (a -> a -> a) -> t a -> a) -> (forall a. (a -> a -> a) -> t a -> a) -> (forall a. t a -> [a]) -> (forall a. t a -> Bool) -> (forall a. t a -> Int) -> (forall a. Eq a => a -> t a -> Bool) -> (forall a. Ord a => t a -> a) -> (forall a. Ord a => t a -> a) -> (forall a. Num a => t a -> a) -> (forall a. Num a => t a -> a) -> Foldable t product :: NucleicAcidChain i a -> a $cproduct :: forall i a. Num a => NucleicAcidChain i a -> a sum :: NucleicAcidChain i a -> a $csum :: forall i a. Num a => NucleicAcidChain i a -> a minimum :: NucleicAcidChain i a -> a $cminimum :: forall i a. Ord a => NucleicAcidChain i a -> a maximum :: NucleicAcidChain i a -> a $cmaximum :: forall i a. Ord a => NucleicAcidChain i a -> a elem :: a -> NucleicAcidChain i a -> Bool $celem :: forall i a. Eq a => a -> NucleicAcidChain i a -> Bool length :: NucleicAcidChain i a -> Int $clength :: forall i a. NucleicAcidChain i a -> Int null :: NucleicAcidChain i a -> Bool $cnull :: forall i a. NucleicAcidChain i a -> Bool toList :: NucleicAcidChain i a -> [a] $ctoList :: forall i a. NucleicAcidChain i a -> [a] foldl1 :: (a -> a -> a) -> NucleicAcidChain i a -> a $cfoldl1 :: forall i a. (a -> a -> a) -> NucleicAcidChain i a -> a foldr1 :: (a -> a -> a) -> NucleicAcidChain i a -> a $cfoldr1 :: forall i a. (a -> a -> a) -> NucleicAcidChain i a -> a foldl' :: (b -> a -> b) -> b -> NucleicAcidChain i a -> b $cfoldl' :: forall i b a. (b -> a -> b) -> b -> NucleicAcidChain i a -> b foldl :: (b -> a -> b) -> b -> NucleicAcidChain i a -> b $cfoldl :: forall i b a. (b -> a -> b) -> b -> NucleicAcidChain i a -> b foldr' :: (a -> b -> b) -> b -> NucleicAcidChain i a -> b $cfoldr' :: forall i a b. (a -> b -> b) -> b -> NucleicAcidChain i a -> b foldr :: (a -> b -> b) -> b -> NucleicAcidChain i a -> b $cfoldr :: forall i a b. (a -> b -> b) -> b -> NucleicAcidChain i a -> b foldMap' :: (a -> m) -> NucleicAcidChain i a -> m $cfoldMap' :: forall i m a. Monoid m => (a -> m) -> NucleicAcidChain i a -> m foldMap :: (a -> m) -> NucleicAcidChain i a -> m $cfoldMap :: forall i m a. Monoid m => (a -> m) -> NucleicAcidChain i a -> m fold :: NucleicAcidChain i m -> m $cfold :: forall i m. Monoid m => NucleicAcidChain i m -> m Foldable, Functor (NucleicAcidChain i) Foldable (NucleicAcidChain i) Functor (NucleicAcidChain i) -> Foldable (NucleicAcidChain i) -> (forall (f :: * -> *) a b. Applicative f => (a -> f b) -> NucleicAcidChain i a -> f (NucleicAcidChain i b)) -> (forall (f :: * -> *) a. Applicative f => NucleicAcidChain i (f a) -> f (NucleicAcidChain i a)) -> (forall (m :: * -> *) a b. Monad m => (a -> m b) -> NucleicAcidChain i a -> m (NucleicAcidChain i b)) -> (forall (m :: * -> *) a. Monad m => NucleicAcidChain i (m a) -> m (NucleicAcidChain i a)) -> Traversable (NucleicAcidChain i) (a -> f b) -> NucleicAcidChain i a -> f (NucleicAcidChain i b) forall i. Ix i => Functor (NucleicAcidChain i) forall i. Ix i => Foldable (NucleicAcidChain i) forall i (m :: * -> *) a. (Ix i, Monad m) => NucleicAcidChain i (m a) -> m (NucleicAcidChain i a) forall i (f :: * -> *) a. (Ix i, Applicative f) => NucleicAcidChain i (f a) -> f (NucleicAcidChain i a) forall i (m :: * -> *) a b. (Ix i, Monad m) => (a -> m b) -> NucleicAcidChain i a -> m (NucleicAcidChain i b) forall i (f :: * -> *) a b. (Ix i, Applicative f) => (a -> f b) -> NucleicAcidChain i a -> f (NucleicAcidChain i b) forall (t :: * -> *). Functor t -> Foldable t -> (forall (f :: * -> *) a b. Applicative f => (a -> f b) -> t a -> f (t b)) -> (forall (f :: * -> *) a. Applicative f => t (f a) -> f (t a)) -> (forall (m :: * -> *) a b. Monad m => (a -> m b) -> t a -> m (t b)) -> (forall (m :: * -> *) a. Monad m => t (m a) -> m (t a)) -> Traversable t forall (m :: * -> *) a. Monad m => NucleicAcidChain i (m a) -> m (NucleicAcidChain i a) forall (f :: * -> *) a. Applicative f => NucleicAcidChain i (f a) -> f (NucleicAcidChain i a) forall (m :: * -> *) a b. Monad m => (a -> m b) -> NucleicAcidChain i a -> m (NucleicAcidChain i b) forall (f :: * -> *) a b. Applicative f => (a -> f b) -> NucleicAcidChain i a -> f (NucleicAcidChain i b) sequence :: NucleicAcidChain i (m a) -> m (NucleicAcidChain i a) $csequence :: forall i (m :: * -> *) a. (Ix i, Monad m) => NucleicAcidChain i (m a) -> m (NucleicAcidChain i a) mapM :: (a -> m b) -> NucleicAcidChain i a -> m (NucleicAcidChain i b) $cmapM :: forall i (m :: * -> *) a b. (Ix i, Monad m) => (a -> m b) -> NucleicAcidChain i a -> m (NucleicAcidChain i b) sequenceA :: NucleicAcidChain i (f a) -> f (NucleicAcidChain i a) $csequenceA :: forall i (f :: * -> *) a. (Ix i, Applicative f) => NucleicAcidChain i (f a) -> f (NucleicAcidChain i a) traverse :: (a -> f b) -> NucleicAcidChain i a -> f (NucleicAcidChain i b) $ctraverse :: forall i (f :: * -> *) a b. (Ix i, Applicative f) => (a -> f b) -> NucleicAcidChain i a -> f (NucleicAcidChain i b) $cp2Traversable :: forall i. Ix i => Foldable (NucleicAcidChain i) $cp1Traversable :: forall i. Ix i => Functor (NucleicAcidChain i) Traversable, Enum (Index (NucleicAcidChain i a)) Ixed (NucleicAcidChain i a) Index (NucleicAcidChain i a) -> (IxValue (NucleicAcidChain i a) -> IxValue (NucleicAcidChain i a)) -> NucleicAcidChain i a -> NucleicAcidChain i a Ixed (NucleicAcidChain i a) -> Enum (Index (NucleicAcidChain i a)) -> (NucleicAcidChain i a -> (Index (NucleicAcidChain i a), Index (NucleicAcidChain i a))) -> (NucleicAcidChain i a -> [(Index (NucleicAcidChain i a), IxValue (NucleicAcidChain i a))]) -> (Index (NucleicAcidChain i a) -> (IxValue (NucleicAcidChain i a) -> IxValue (NucleicAcidChain i a)) -> NucleicAcidChain i a -> NucleicAcidChain i a) -> (Index (NucleicAcidChain i a) -> (IxValue (NucleicAcidChain i a) -> IxValue (NucleicAcidChain i a)) -> NucleicAcidChain i a -> NucleicAcidChain i a) -> (Index (NucleicAcidChain i a) -> (IxValue (NucleicAcidChain i a) -> IxValue (NucleicAcidChain i a)) -> NucleicAcidChain i a -> NucleicAcidChain i a) -> (NucleicAcidChain i a -> Index (NucleicAcidChain i a) -> IxValue (NucleicAcidChain i a)) -> ChainLike (NucleicAcidChain i a) NucleicAcidChain i a -> [(Index (NucleicAcidChain i a), IxValue (NucleicAcidChain i a))] NucleicAcidChain i a -> (Index (NucleicAcidChain i a), Index (NucleicAcidChain i a)) NucleicAcidChain i a -> Index (NucleicAcidChain i a) -> IxValue (NucleicAcidChain i a) forall m. Ixed m -> Enum (Index m) -> (m -> (Index m, Index m)) -> (m -> [(Index m, IxValue m)]) -> (Index m -> (IxValue m -> IxValue m) -> m -> m) -> (Index m -> (IxValue m -> IxValue m) -> m -> m) -> (Index m -> (IxValue m -> IxValue m) -> m -> m) -> (m -> Index m -> IxValue m) -> ChainLike m forall i a. (Ix i, Enum i) => Enum (Index (NucleicAcidChain i a)) forall i a. (Ix i, Enum i) => Ixed (NucleicAcidChain i a) forall i a. (Ix i, Enum i) => Index (NucleicAcidChain i a) -> (IxValue (NucleicAcidChain i a) -> IxValue (NucleicAcidChain i a)) -> NucleicAcidChain i a -> NucleicAcidChain i a forall i a. (Ix i, Enum i) => NucleicAcidChain i a -> [(Index (NucleicAcidChain i a), IxValue (NucleicAcidChain i a))] forall i a. (Ix i, Enum i) => NucleicAcidChain i a -> (Index (NucleicAcidChain i a), Index (NucleicAcidChain i a)) forall i a. (Ix i, Enum i) => NucleicAcidChain i a -> Index (NucleicAcidChain i a) -> IxValue (NucleicAcidChain i a) unsafeRead :: NucleicAcidChain i a -> Index (NucleicAcidChain i a) -> IxValue (NucleicAcidChain i a) $cunsafeRead :: forall i a. (Ix i, Enum i) => NucleicAcidChain i a -> Index (NucleicAcidChain i a) -> IxValue (NucleicAcidChain i a) modifyAfter :: Index (NucleicAcidChain i a) -> (IxValue (NucleicAcidChain i a) -> IxValue (NucleicAcidChain i a)) -> NucleicAcidChain i a -> NucleicAcidChain i a $cmodifyAfter :: forall i a. (Ix i, Enum i) => Index (NucleicAcidChain i a) -> (IxValue (NucleicAcidChain i a) -> IxValue (NucleicAcidChain i a)) -> NucleicAcidChain i a -> NucleicAcidChain i a modifyBefore :: Index (NucleicAcidChain i a) -> (IxValue (NucleicAcidChain i a) -> IxValue (NucleicAcidChain i a)) -> NucleicAcidChain i a -> NucleicAcidChain i a $cmodifyBefore :: forall i a. (Ix i, Enum i) => Index (NucleicAcidChain i a) -> (IxValue (NucleicAcidChain i a) -> IxValue (NucleicAcidChain i a)) -> NucleicAcidChain i a -> NucleicAcidChain i a modify :: Index (NucleicAcidChain i a) -> (IxValue (NucleicAcidChain i a) -> IxValue (NucleicAcidChain i a)) -> NucleicAcidChain i a -> NucleicAcidChain i a $cmodify :: forall i a. (Ix i, Enum i) => Index (NucleicAcidChain i a) -> (IxValue (NucleicAcidChain i a) -> IxValue (NucleicAcidChain i a)) -> NucleicAcidChain i a -> NucleicAcidChain i a assocs :: NucleicAcidChain i a -> [(Index (NucleicAcidChain i a), IxValue (NucleicAcidChain i a))] $cassocs :: forall i a. (Ix i, Enum i) => NucleicAcidChain i a -> [(Index (NucleicAcidChain i a), IxValue (NucleicAcidChain i a))] bounds :: NucleicAcidChain i a -> (Index (NucleicAcidChain i a), Index (NucleicAcidChain i a)) $cbounds :: forall i a. (Ix i, Enum i) => NucleicAcidChain i a -> (Index (NucleicAcidChain i a), Index (NucleicAcidChain i a)) $cp2ChainLike :: forall i a. (Ix i, Enum i) => Enum (Index (NucleicAcidChain i a)) $cp1ChainLike :: forall i a. (Ix i, Enum i) => Ixed (NucleicAcidChain i a) ChainLike) type instance Index (NucleicAcidChain i a) = i type instance IxValue (NucleicAcidChain i a) = a instance Ix i => Ixed (NucleicAcidChain i a) where ix :: Index (NucleicAcidChain i a) -> Traversal' (NucleicAcidChain i a) (IxValue (NucleicAcidChain i a)) ix Index (NucleicAcidChain i a) i' = (Chain i a -> f (Chain i a)) -> NucleicAcidChain i a -> f (NucleicAcidChain i a) forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b coerced ((Chain i a -> f (Chain i a)) -> NucleicAcidChain i a -> f (NucleicAcidChain i a)) -> ((a -> f a) -> Chain i a -> f (Chain i a)) -> (a -> f a) -> NucleicAcidChain i a -> f (NucleicAcidChain i a) forall b c a. (b -> c) -> (a -> b) -> a -> c . Index (Chain i a) -> Traversal' (Chain i a) (IxValue (Chain i a)) forall m. Ixed m => Index m -> Traversal' m (IxValue m) ix @(Chain i a) Index (Chain i a) Index (NucleicAcidChain i a) i' instance IsString (NucleicAcidChain Int DNA) where fromString :: String -> NucleicAcidChain Int DNA fromString = Chain Int DNA -> NucleicAcidChain Int DNA forall i a. Chain i a -> NucleicAcidChain i a NucleicAcidChain (Chain Int DNA -> NucleicAcidChain Int DNA) -> (String -> Chain Int DNA) -> String -> NucleicAcidChain Int DNA forall b c a. (b -> c) -> (a -> b) -> a -> c . String -> Chain Int DNA forall a. IsString a => String -> a fromString instance IsString (NucleicAcidChain Int RNA) where fromString :: String -> NucleicAcidChain Int RNA fromString = Chain Int RNA -> NucleicAcidChain Int RNA forall i a. Chain i a -> NucleicAcidChain i a NucleicAcidChain (Chain Int RNA -> NucleicAcidChain Int RNA) -> (String -> Chain Int RNA) -> String -> NucleicAcidChain Int RNA forall b c a. (b -> c) -> (a -> b) -> a -> c . String -> Chain Int RNA forall a. IsString a => String -> a fromString