| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Data.Bytes.Network.Internal
Description
Internal module for Data.Network.NetBytes. The primary difference is this module exposes some underlying details i.e. singleton witnesses. These are hidden by default as they complicate the API.
Since: 0.1
Synopsis
- newtype NetBytes (d :: Direction) (s :: Size) n where
- MkNetBytes (Bytes s n)
- pattern MkNetBytesP :: forall d s n. n -> NetBytes d s n
- _MkNetBytes :: forall (s :: Size) (d :: Direction) n. Iso' (NetBytes d s n) (Bytes s n)
- netToSSize :: forall (s :: Size) (d :: Direction) n. SingI s => NetBytes d s n -> SSize s
- netToSDirection :: forall (d :: Direction) (s :: Size) n. SingI d => NetBytes d s n -> SDirection d
- data SomeNetSize (d :: Direction) n where
- MkSomeNetSize :: forall (s :: Size) (d :: Direction) n. SSize s -> NetBytes d s n -> SomeNetSize d n
- _MkSomeNetSize :: forall (s :: Size) (d :: Direction) n. (FromInteger n, MGroup n, SingI s) => Iso' (SomeNetSize d n) (NetBytes d s n)
- someNetSizeToSDirection :: forall (d :: Direction) n. SingI d => SomeNetSize d n -> SDirection d
- data SomeNetDir (s :: Size) n where
- MkSomeNetDir :: forall (d :: Direction) (s :: Size) n. SDirection d -> NetBytes d s n -> SomeNetDir s n
- _MkSomeNetDir :: forall (s :: Size) (d :: Direction) n. SingI d => Review (SomeNetDir s n) (NetBytes d s n)
- someNetDirToSSize :: forall (s :: Size) n. SingI s => SomeNetDir s n -> SSize s
- data SomeNet n where
- _MkSomeNet :: forall (s :: Size) (d :: Direction) n. (SingI d, SingI s) => Review (SomeNet n) (NetBytes d s n)
Network Bytes
newtype NetBytes (d :: Direction) (s :: Size) n Source #
Wrapper around the Bytes type that adds the Direction tag.
Examples
>>>MkNetBytesP @Up @M 1000MkNetBytes (MkBytes 1000)
Since: 0.1
Constructors
| MkNetBytes (Bytes s n) |
Bundled Patterns
| pattern MkNetBytesP :: forall d s n. n -> NetBytes d s n | Pattern for de/constructing Since: 0.1 |
Instances
netToSDirection :: forall (d :: Direction) (s :: Size) n. SingI d => NetBytes d s n -> SDirection d Source #
Retrieves the SDirection witness. Can be used to recover the
Direction.
>>>netToSDirection (MkNetBytesP @Up @K @Int 7)SUp
Since: 0.1
Unknown Size
data SomeNetSize (d :: Direction) n where Source #
Wrapper for NetBytes, existentially quantifying the size. This is useful
when a function does not know a priori what size it should return e.g.
>>>:{getUpTraffic :: IO (SomeNetSize Up Float) getUpTraffic = do -- getUpTrafficRaw :: IO (Float, String) (bytes, units) <- getUpTrafficRaw pure $ case units of "B" -> hideSize $ MkNetBytesP @Up @B bytes "K" -> hideSize $ MkNetBytesP @Up @K bytes _ -> error "todo" :}
We define an equivalence relation on SomeNetSize that takes units into
account. For instance,
>>>hideSize (MkNetBytesP @Up @K 1000) == hideSize (MkNetBytesP @Up @M 1)True
Because we expose the underlying NetBytes in several ways (e.g. Show,
the SSize witness), this is technically unlawful for equality
as it breaks the extensionality law:
\[ x = y \implies f(x) = f(y). \]
Since: 0.1
Constructors
| MkSomeNetSize :: forall (s :: Size) (d :: Direction) n. SSize s -> NetBytes d s n -> SomeNetSize d n | Since: 0.1 |
Instances
| HasField "unSomeNetSize" (SomeNetSize d n) n Source # | Since: 0.1 | ||||
Defined in Data.Bytes.Network.Internal Methods getField :: SomeNetSize d n -> n # | |||||
| (k ~ A_Getter, a ~ n, b ~ n) => LabelOptic "unSomeNetSize" k (SomeNetSize d n) (SomeNetSize d n) a b Source # | Since: 0.1 | ||||
Defined in Data.Bytes.Network.Internal Methods labelOptic :: Optic k NoIx (SomeNetSize d n) (SomeNetSize d n) a b Source # | |||||
| Foldable (SomeNetSize d) Source # | Since: 0.1 | ||||
Defined in Data.Bytes.Network.Internal Methods fold :: Monoid m => SomeNetSize d m -> m # foldMap :: Monoid m => (a -> m) -> SomeNetSize d a -> m # foldMap' :: Monoid m => (a -> m) -> SomeNetSize d a -> m # foldr :: (a -> b -> b) -> b -> SomeNetSize d a -> b # foldr' :: (a -> b -> b) -> b -> SomeNetSize d a -> b # foldl :: (b -> a -> b) -> b -> SomeNetSize d a -> b # foldl' :: (b -> a -> b) -> b -> SomeNetSize d a -> b # foldr1 :: (a -> a -> a) -> SomeNetSize d a -> a # foldl1 :: (a -> a -> a) -> SomeNetSize d a -> a # toList :: SomeNetSize d a -> [a] # null :: SomeNetSize d a -> Bool # length :: SomeNetSize d a -> Int # elem :: Eq a => a -> SomeNetSize d a -> Bool # maximum :: Ord a => SomeNetSize d a -> a # minimum :: Ord a => SomeNetSize d a -> a # sum :: Num a => SomeNetSize d a -> a # product :: Num a => SomeNetSize d a -> a # | |||||
| Traversable (SomeNetSize d) Source # | Since: 0.1 | ||||
Defined in Data.Bytes.Network.Internal Methods traverse :: Applicative f => (a -> f b) -> SomeNetSize d a -> f (SomeNetSize d b) # sequenceA :: Applicative f => SomeNetSize d (f a) -> f (SomeNetSize d a) # mapM :: Monad m => (a -> m b) -> SomeNetSize d a -> m (SomeNetSize d b) # sequence :: Monad m => SomeNetSize d (m a) -> m (SomeNetSize d a) # | |||||
| Functor (SomeNetSize d) Source # | Since: 0.1 | ||||
Defined in Data.Bytes.Network.Internal Methods fmap :: (a -> b) -> SomeNetSize d a -> SomeNetSize d b # (<$) :: a -> SomeNetSize d b -> SomeNetSize d a # | |||||
| (Field n, FromInteger n) => AGroup (SomeNetSize d n) Source # | Since: 0.1 | ||||
Defined in Data.Bytes.Network.Internal Methods (.-.) :: SomeNetSize d n -> SomeNetSize d n -> SomeNetSize d n Source # | |||||
| (FromInteger n, Semifield n) => AMonoid (SomeNetSize d n) Source # | Since: 0.1 | ||||
Defined in Data.Bytes.Network.Internal Methods zero :: SomeNetSize d n Source # | |||||
| (ASemigroup n, FromInteger n, MGroup n) => ASemigroup (SomeNetSize d n) Source # | Since: 0.1 | ||||
Defined in Data.Bytes.Network.Internal Methods (.+.) :: SomeNetSize d n -> SomeNetSize d n -> SomeNetSize d n Source # | |||||
| (FromInteger n, MetricSpace n, MGroup n) => MetricSpace (SomeNetSize d n) Source # | Since: 0.1 | ||||
Defined in Data.Bytes.Network.Internal Methods diffR :: SomeNetSize d n -> SomeNetSize d n -> Double Source # | |||||
| Normed n => Normed (SomeNetSize d n) Source # | Since: 0.1 | ||||
Defined in Data.Bytes.Network.Internal Methods norm :: SomeNetSize d n -> SomeNetSize d n Source # sgn :: SomeNetSize d n -> SomeNetSize d n Source # | |||||
| FromInteger n => FromInteger (SomeNetSize d n) Source # | Fixed size Since: 0.1 | ||||
Defined in Data.Bytes.Network.Internal Methods fromZ :: Integer -> SomeNetSize d n Source # | |||||
| FromRational n => FromRational (SomeNetSize d n) Source # | Fixed size Since: 0.1 | ||||
Defined in Data.Bytes.Network.Internal Methods fromQ :: Rational -> SomeNetSize d n Source # | |||||
| FromReal n => FromReal (SomeNetSize d n) Source # | Since: 0.1 | ||||
Defined in Data.Bytes.Network.Internal Methods fromR :: Double -> SomeNetSize d n Source # | |||||
| (FromInteger n, MGroup n, ToInteger n) => ToInteger (SomeNetSize d n) Source # | Since: 0.1 | ||||
Defined in Data.Bytes.Network.Internal Methods toZ :: SomeNetSize d n -> Integer Source # | |||||
| (FromInteger n, MGroup n, ToRational n) => ToRational (SomeNetSize d n) Source # | Since: 0.1 | ||||
Defined in Data.Bytes.Network.Internal Methods toQ :: SomeNetSize d n -> Rational Source # | |||||
| (FromInteger n, MGroup n, ToReal n) => ToReal (SomeNetSize d n) Source # | Since: 0.1 | ||||
Defined in Data.Bytes.Network.Internal Methods toR :: SomeNetSize d n -> Double Source # | |||||
| Show n => Show (SomeNetSize d n) Source # | Since: 0.1 | ||||
Defined in Data.Bytes.Network.Internal Methods showsPrec :: Int -> SomeNetSize d n -> ShowS # show :: SomeNetSize d n -> String # showList :: [SomeNetSize d n] -> ShowS # | |||||
| NFData n => NFData (SomeNetSize d n) Source # | Since: 0.1 | ||||
Defined in Data.Bytes.Network.Internal Methods rnf :: SomeNetSize d n -> () # | |||||
| (Eq n, FromInteger n, MGroup n) => Eq (SomeNetSize d n) Source # | Since: 0.1 | ||||
Defined in Data.Bytes.Network.Internal Methods (==) :: SomeNetSize d n -> SomeNetSize d n -> Bool # (/=) :: SomeNetSize d n -> SomeNetSize d n -> Bool # | |||||
| (FromInteger n, MGroup n, Ord n) => Ord (SomeNetSize d n) Source # | Since: 0.1 | ||||
Defined in Data.Bytes.Network.Internal Methods compare :: SomeNetSize d n -> SomeNetSize d n -> Ordering # (<) :: SomeNetSize d n -> SomeNetSize d n -> Bool # (<=) :: SomeNetSize d n -> SomeNetSize d n -> Bool # (>) :: SomeNetSize d n -> SomeNetSize d n -> Bool # (>=) :: SomeNetSize d n -> SomeNetSize d n -> Bool # max :: SomeNetSize d n -> SomeNetSize d n -> SomeNetSize d n # min :: SomeNetSize d n -> SomeNetSize d n -> SomeNetSize d n # | |||||
| (FromInteger n, Hashable n, MGroup n) => Hashable (SomeNetSize d n) Source # | Since: 0.1 | ||||
Defined in Data.Bytes.Network.Internal Methods hashWithSalt :: Int -> SomeNetSize d n -> Int Source # hash :: SomeNetSize d n -> Int Source # | |||||
| (FromInteger n, MGroup n) => Conversion (SomeNetSize d n) Source # | Since: 0.1 | ||||
Defined in Data.Bytes.Network.Internal Methods convert_ :: forall (t :: Size). SingI t => SomeNetSize d n -> Converted t (SomeNetSize d n) Source # | |||||
| (FromInteger n, MGroup n, Normed n, Ord n) => Normalize (SomeNetSize d n) Source # | Since: 0.1 | ||||
Defined in Data.Bytes.Network.Internal Associated Types
Methods normalize :: SomeNetSize d n -> Norm (SomeNetSize d n) Source # | |||||
| Read n => Parser (SomeNetSize d n) Source # | Since: 0.1 | ||||
Defined in Data.Bytes.Network.Internal | |||||
| RawNumeric (SomeNetSize d n) Source # | Since: 0.1 | ||||
Defined in Data.Bytes.Network.Internal Associated Types
Methods toRaw :: SomeNetSize d n -> Raw (SomeNetSize d n) Source # | |||||
| SingI d => Directed (SomeNetSize d n) Source # | Since: 0.1 | ||||
Defined in Data.Bytes.Network.Internal Associated Types
Methods directionOf :: SomeNetSize d n -> Direction Source # hideDirection :: SomeNetSize d n -> HideDirection (SomeNetSize d n) Source # | |||||
| Sized (SomeNetSize d n) Source # | Since: 0.1 | ||||
Defined in Data.Bytes.Network.Internal Associated Types
Methods sizeOf :: SomeNetSize d n -> Size Source # hideSize :: SomeNetSize d n -> HideSize (SomeNetSize d n) Source # | |||||
| MGroup n => MSemiSpace (SomeNetSize d n) n Source # | Since: 0.1 | ||||
Defined in Data.Bytes.Network.Internal Methods (.*) :: SomeNetSize d n -> n -> SomeNetSize d n Source # | |||||
| MGroup n => MSpace (SomeNetSize d n) n Source # | Since: 0.1 | ||||
Defined in Data.Bytes.Network.Internal Methods (.%) :: SomeNetSize d n -> n -> SomeNetSize d n Source # | |||||
| (Field n, FromInteger n) => Module (SomeNetSize d n) n Source # | Since: 0.1 | ||||
Defined in Data.Bytes.Network.Internal | |||||
| (FromInteger n, Semifield n) => Semimodule (SomeNetSize d n) n Source # | Since: 0.1 | ||||
Defined in Data.Bytes.Network.Internal | |||||
| (FromInteger n, Semifield n) => SemivectorSpace (SomeNetSize d n) n Source # | Since: 0.1 | ||||
Defined in Data.Bytes.Network.Internal | |||||
| (FromInteger n, Field n) => VectorSpace (SomeNetSize d n) n Source # | Since: 0.1 | ||||
Defined in Data.Bytes.Network.Internal | |||||
| type Converted t (SomeNetSize d n) Source # | |||||
Defined in Data.Bytes.Network.Internal | |||||
| type Norm (SomeNetSize d n) Source # | |||||
Defined in Data.Bytes.Network.Internal | |||||
| type Raw (SomeNetSize d n) Source # | |||||
Defined in Data.Bytes.Network.Internal | |||||
| type HideDirection (SomeNetSize d n) Source # | |||||
Defined in Data.Bytes.Network.Internal | |||||
| type HideSize (SomeNetSize d n) Source # | |||||
Defined in Data.Bytes.Network.Internal | |||||
_MkSomeNetSize :: forall (s :: Size) (d :: Direction) n. (FromInteger n, MGroup n, SingI s) => Iso' (SomeNetSize d n) (NetBytes d s n) Source #
Iso' between SomeNetSize and underlying NetBytes. Performs any
necessary conversions when going from SomeNetSize d n -> NetBytes d s n.
Examples
>>>import Optics.Core (review, view)>>>review _MkSomeNetSize (MkNetBytesP @Up @K @Int 70)MkSomeNetSize SK (MkNetBytes (MkBytes 70))
>>>(view _MkSomeNetSize (hideSize $ MkNetBytesP @Up @K @Int 70)) :: NetBytes Up B IntMkNetBytes (MkBytes 70000)
Since: 0.1
someNetSizeToSDirection :: forall (d :: Direction) n. SingI d => SomeNetSize d n -> SDirection d Source #
Unknown Direction
data SomeNetDir (s :: Size) n where Source #
Wrapper for NetBytes, existentially quantifying the direction.
This is useful when a function does not know a priori what
direction it should return e.g.
>>>:{getMaxTraffic :: IO (SomeNetDir K Double) getMaxTraffic = do -- getMaxTraffickRaw :: IO (Double, String) (bytes, direction) <- getMaxTraffickRaw pure $ case direction of "down" -> hideDirection $ MkNetBytesP @Down bytes "up" -> hideDirection $ MkNetBytesP @Up bytes _ -> error "bad direction" :}
We deliberately do not provide instances for SomeX classes that could be
used to combine arbitrary SomeNetDirs (e.g. Applicative,
AGroup), as that would defeat the purpose
of enforcing the distinction between upload and downloaded bytes.
Equality is determined by the usual equivalence class -- that takes units into account -- and by considering the direction.
>>>let x = MkNetBytesP @Up @K 1000 :: NetBytes Up K Int>>>let y = MkNetBytesP @Down @K 1000 :: NetBytes Down K Int>>>hideDirection x == hideDirection xTrue>>>hideDirection x == hideDirection yFalse
Notice no Ord instance is provided, as we provide no ordering for
Direction.
Since: 0.1
Constructors
| MkSomeNetDir :: forall (d :: Direction) (s :: Size) n. SDirection d -> NetBytes d s n -> SomeNetDir s n | Since: 0.1 |
Instances
| HasField "unSomeNetDir" (SomeNetDir s n) n Source # | Since: 0.1 | ||||
Defined in Data.Bytes.Network.Internal Methods getField :: SomeNetDir s n -> n # | |||||
| (k ~ A_Getter, a ~ n, b ~ n) => LabelOptic "unSomeNetDir" k (SomeNetDir s n) (SomeNetDir s n) a b Source # | Since: 0.1 | ||||
Defined in Data.Bytes.Network.Internal Methods labelOptic :: Optic k NoIx (SomeNetDir s n) (SomeNetDir s n) a b Source # | |||||
| Foldable (SomeNetDir s) Source # | Since: 0.1 | ||||
Defined in Data.Bytes.Network.Internal Methods fold :: Monoid m => SomeNetDir s m -> m # foldMap :: Monoid m => (a -> m) -> SomeNetDir s a -> m # foldMap' :: Monoid m => (a -> m) -> SomeNetDir s a -> m # foldr :: (a -> b -> b) -> b -> SomeNetDir s a -> b # foldr' :: (a -> b -> b) -> b -> SomeNetDir s a -> b # foldl :: (b -> a -> b) -> b -> SomeNetDir s a -> b # foldl' :: (b -> a -> b) -> b -> SomeNetDir s a -> b # foldr1 :: (a -> a -> a) -> SomeNetDir s a -> a # foldl1 :: (a -> a -> a) -> SomeNetDir s a -> a # toList :: SomeNetDir s a -> [a] # null :: SomeNetDir s a -> Bool # length :: SomeNetDir s a -> Int # elem :: Eq a => a -> SomeNetDir s a -> Bool # maximum :: Ord a => SomeNetDir s a -> a # minimum :: Ord a => SomeNetDir s a -> a # sum :: Num a => SomeNetDir s a -> a # product :: Num a => SomeNetDir s a -> a # | |||||
| Traversable (SomeNetDir d) Source # | Since: 0.1 | ||||
Defined in Data.Bytes.Network.Internal Methods traverse :: Applicative f => (a -> f b) -> SomeNetDir d a -> f (SomeNetDir d b) # sequenceA :: Applicative f => SomeNetDir d (f a) -> f (SomeNetDir d a) # mapM :: Monad m => (a -> m b) -> SomeNetDir d a -> m (SomeNetDir d b) # sequence :: Monad m => SomeNetDir d (m a) -> m (SomeNetDir d a) # | |||||
| Functor (SomeNetDir s) Source # | Since: 0.1 | ||||
Defined in Data.Bytes.Network.Internal Methods fmap :: (a -> b) -> SomeNetDir s a -> SomeNetDir s b # (<$) :: a -> SomeNetDir s b -> SomeNetDir s a # | |||||
| Normed n => Normed (SomeNetDir s n) Source # | Since: 0.1 | ||||
Defined in Data.Bytes.Network.Internal Methods norm :: SomeNetDir s n -> SomeNetDir s n Source # sgn :: SomeNetDir s n -> SomeNetDir s n Source # | |||||
| Show n => Show (SomeNetDir s n) Source # | Since: 0.1 | ||||
Defined in Data.Bytes.Network.Internal Methods showsPrec :: Int -> SomeNetDir s n -> ShowS # show :: SomeNetDir s n -> String # showList :: [SomeNetDir s n] -> ShowS # | |||||
| NFData n => NFData (SomeNetDir s n) Source # | Since: 0.1 | ||||
Defined in Data.Bytes.Network.Internal Methods rnf :: SomeNetDir s n -> () # | |||||
| (Eq n, FromInteger n, SingI s) => Eq (SomeNetDir s n) Source # | Since: 0.1 | ||||
Defined in Data.Bytes.Network.Internal Methods (==) :: SomeNetDir s n -> SomeNetDir s n -> Bool # (/=) :: SomeNetDir s n -> SomeNetDir s n -> Bool # | |||||
| (FromInteger n, Hashable n, MGroup n, SingI s) => Hashable (SomeNetDir s n) Source # | Since: 0.1 | ||||
Defined in Data.Bytes.Network.Internal | |||||
| (FromInteger n, MGroup n, SingI s) => Conversion (SomeNetDir s n) Source # | Since: 0.1 | ||||
Defined in Data.Bytes.Network.Internal Methods convert_ :: forall (t :: Size). SingI t => SomeNetDir s n -> Converted t (SomeNetDir s n) Source # | |||||
| (FromInteger n, MGroup n, Normed n, Ord n, SingI s) => Normalize (SomeNetDir s n) Source # | Since: 0.1 | ||||
Defined in Data.Bytes.Network.Internal Associated Types
Methods normalize :: SomeNetDir s n -> Norm (SomeNetDir s n) Source # | |||||
| Read n => Parser (SomeNetDir s n) Source # | Since: 0.1 | ||||
Defined in Data.Bytes.Network.Internal | |||||
| RawNumeric (SomeNetDir s n) Source # | Since: 0.1 | ||||
Defined in Data.Bytes.Network.Internal Associated Types
Methods toRaw :: SomeNetDir s n -> Raw (SomeNetDir s n) Source # | |||||
| Directed (SomeNetDir s n) Source # | Since: 0.1 | ||||
Defined in Data.Bytes.Network.Internal Associated Types
Methods directionOf :: SomeNetDir s n -> Direction Source # hideDirection :: SomeNetDir s n -> HideDirection (SomeNetDir s n) Source # | |||||
| SingI s => Sized (SomeNetDir s n) Source # | Since: 0.1 | ||||
Defined in Data.Bytes.Network.Internal Associated Types
Methods sizeOf :: SomeNetDir s n -> Size Source # hideSize :: SomeNetDir s n -> HideSize (SomeNetDir s n) Source # | |||||
| MSemigroup n => MSemiSpace (SomeNetDir s n) n Source # | Since: 0.1 | ||||
Defined in Data.Bytes.Network.Internal Methods (.*) :: SomeNetDir s n -> n -> SomeNetDir s n Source # | |||||
| MGroup n => MSpace (SomeNetDir s n) n Source # | Since: 0.1 | ||||
Defined in Data.Bytes.Network.Internal Methods (.%) :: SomeNetDir s n -> n -> SomeNetDir s n Source # | |||||
| type Converted t (SomeNetDir s n) Source # | |||||
Defined in Data.Bytes.Network.Internal | |||||
| type Norm (SomeNetDir s n) Source # | |||||
Defined in Data.Bytes.Network.Internal | |||||
| type Raw (SomeNetDir s n) Source # | |||||
Defined in Data.Bytes.Network.Internal | |||||
| type HideDirection (SomeNetDir s n) Source # | |||||
Defined in Data.Bytes.Network.Internal | |||||
| type HideSize (SomeNetDir s n) Source # | |||||
Defined in Data.Bytes.Network.Internal | |||||
_MkSomeNetDir :: forall (s :: Size) (d :: Direction) n. SingI d => Review (SomeNetDir s n) (NetBytes d s n) Source #
Review between SomeNetDir and underlying NetBytes. This is not an
iso (i.e. only allows NetBytes -> SomeNetDir) because the opposite
direction would require dropping the Direction and the user arbitrarily
choosing a new one.
Examples
>>>import Optics.Core (review)>>>review _MkSomeNetDir (MkNetBytesP @Up @K @Int 70)MkSomeNetDir SUp (MkNetBytes (MkBytes 70))
Since: 0.1
someNetDirToSSize :: forall (s :: Size) n. SingI s => SomeNetDir s n -> SSize s Source #
Unknown Direction and Size
Wrapper for NetBytes, existentially quantifying the size and
direction. This is useful when a function does not know a priori what
size or direction it should return e.g.
>>>:{getMaxTraffic :: IO (SomeNet Double) getMaxTraffic = do -- getMaxTrafficNetRaw :: IO (Double, String, String) (bytes, direction, size) <- getMaxTrafficNetRaw pure $ case (direction, size) of ("Down", "K") -> hideDirection $ hideSize $ MkNetBytesP @Down @K bytes ("Up", "M") -> hideDirection $ hideSize $ MkNetBytesP @Up @M bytes _ -> error "todo" :}
SomeNet carries along SDirection and SSize runtime witnesses
for recovering the Direction
and Size, respectively.
This instance uses the same equivalence relation from SomeNetSize
w.r.t the size, and also includes an equality check on the direction.
Thus we have, for instance,
>>>let x = MkNetBytesP 1_000 :: NetBytes Up K Int>>>let y = MkNetBytesP 1 :: NetBytes Up M Int>>>let z = MkNetBytesP 1_000 :: NetBytes Down K Int>>>hideDirection (hideSize x) == hideDirection (hideSize y)True
>>>hideDirection (hideSize x) == hideDirection (hideSize z)False
Since: 0.1
Constructors
| MkSomeNet :: forall (d :: Direction) (s :: Size) n. SDirection d -> SSize s -> NetBytes d s n -> SomeNet n | Since: 0.1 |
Instances
| Foldable SomeNet Source # | Since: 0.1 | ||||
Defined in Data.Bytes.Network.Internal Methods fold :: Monoid m => SomeNet m -> m # foldMap :: Monoid m => (a -> m) -> SomeNet a -> m # foldMap' :: Monoid m => (a -> m) -> SomeNet a -> m # foldr :: (a -> b -> b) -> b -> SomeNet a -> b # foldr' :: (a -> b -> b) -> b -> SomeNet a -> b # foldl :: (b -> a -> b) -> b -> SomeNet a -> b # foldl' :: (b -> a -> b) -> b -> SomeNet a -> b # foldr1 :: (a -> a -> a) -> SomeNet a -> a # foldl1 :: (a -> a -> a) -> SomeNet a -> a # elem :: Eq a => a -> SomeNet a -> Bool # maximum :: Ord a => SomeNet a -> a # minimum :: Ord a => SomeNet a -> a # | |||||
| Traversable SomeNet Source # | Since: 0.1 | ||||
| Functor SomeNet Source # | Since: 0.1 | ||||
| HasField "unSomeNet" (SomeNet n) n Source # | Since: 0.1 | ||||
Defined in Data.Bytes.Network.Internal | |||||
| (k ~ A_Getter, a ~ n, b ~ n) => LabelOptic "unSomeNet" k (SomeNet n) (SomeNet n) a b Source # | Since: 0.1 | ||||
Defined in Data.Bytes.Network.Internal | |||||
| Normed n => Normed (SomeNet n) Source # | Since: 0.1 | ||||
| Show n => Show (SomeNet n) Source # | Since: 0.1 | ||||
| NFData n => NFData (SomeNet n) Source # | Since: 0.1 | ||||
Defined in Data.Bytes.Network.Internal | |||||
| (Eq n, FromInteger n, MGroup n) => Eq (SomeNet n) Source # | Since: 0.1 | ||||
| (FromInteger n, Hashable n, MGroup n) => Hashable (SomeNet n) Source # | Since: 0.1 | ||||
| (FromInteger n, MGroup n) => Conversion (SomeNet n) Source # | Since: 0.1 | ||||
| (FromInteger n, MGroup n, Normed n, Ord n) => Normalize (SomeNet n) Source # | Since: 0.1 | ||||
| Read n => Parser (SomeNet n) Source # | Since: 0.1 | ||||
| RawNumeric (SomeNet n) Source # | Since: 0.1 | ||||
| Directed (SomeNet n) Source # | Since: 0.1 | ||||
Defined in Data.Bytes.Network.Internal Associated Types
Methods directionOf :: SomeNet n -> Direction Source # hideDirection :: SomeNet n -> HideDirection (SomeNet n) Source # | |||||
| Sized (SomeNet n) Source # | Since: 0.1 | ||||
| MSemigroup n => MSemiSpace (SomeNet n) n Source # | Since: 0.1 | ||||
| MGroup n => MSpace (SomeNet n) n Source # | Since: 0.1 | ||||
| type Converted t (SomeNet n) Source # | |||||
Defined in Data.Bytes.Network.Internal | |||||
| type Norm (SomeNet n) Source # | |||||
Defined in Data.Bytes.Network.Internal | |||||
| type Raw (SomeNet n) Source # | |||||
Defined in Data.Bytes.Network.Internal | |||||
| type HideDirection (SomeNet n) Source # | |||||
Defined in Data.Bytes.Network.Internal | |||||
| type HideSize (SomeNet n) Source # | |||||
Defined in Data.Bytes.Network.Internal | |||||
_MkSomeNet :: forall (s :: Size) (d :: Direction) n. (SingI d, SingI s) => Review (SomeNet n) (NetBytes d s n) Source #
Review between SomeNet and underlying NetBytes. This is not an
iso (i.e. only allows NetBytes -> SomeNet) because the opposite
direction would require dropping the Direction and the user arbitrarily
choosing a new one.
Examples
>>>import Optics.Core (review)>>>review _MkSomeNet (MkNetBytesP @Up @K @Int 70)MkSomeNet SUp SK (MkNetBytes (MkBytes 70))
Since: 0.1