Safe Haskell | None |
---|---|
Language | Haskell2010 |
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. SingSize s => NetBytes d s n -> SSize s
- netToSDirection :: forall (d :: Direction) (s :: Size) n. SingDirection 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, SingSize s) => Iso' (SomeNetSize d n) (NetBytes d s n)
- someNetSizeToSDirection :: forall (d :: Direction) n. SingDirection 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. SingDirection d => Review (SomeNetDir s n) (NetBytes d s n)
- someNetDirToSSize :: forall (s :: Size) n. SingSize s => SomeNetDir s n -> SSize s
- data SomeNet n where
- _MkSomeNet :: forall (s :: Size) (d :: Direction) n. (SingDirection d, SingSize 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 1000
MkNetBytes (MkBytes 1000)
Since: 0.1
MkNetBytes (Bytes s n) |
pattern MkNetBytesP :: forall d s n. n -> NetBytes d s n | Pattern for de/constructing Since: 0.1 |
Instances
netToSSize :: forall (s :: Size) (d :: Direction) n. SingSize s => NetBytes d s n -> SSize s Source #
netToSDirection :: forall (d :: Direction) (s :: Size) n. SingDirection 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
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 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 labelOptic :: Optic k NoIx (SomeNetSize d n) (SomeNetSize d n) a b Source # | |||||
Functor (SomeNetSize d) Source # | Since: 0.1 | ||||
Defined in Data.Bytes.Network.Internal fmap :: (a -> b) -> SomeNetSize d a -> SomeNetSize d b # (<$) :: a -> SomeNetSize d b -> SomeNetSize d a # | |||||
Foldable (SomeNetSize d) Source # | Since: 0.1 | ||||
Defined in Data.Bytes.Network.Internal 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 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) # | |||||
(Field n, FromInteger n) => AGroup (SomeNetSize d n) Source # | Since: 0.1 | ||||
Defined in Data.Bytes.Network.Internal (.-.) :: 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 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 (.+.) :: SomeNetSize d n -> 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 afromInteger :: Integer -> SomeNetSize d n Source # | |||||
FromRational n => FromRational (SomeNetSize d n) Source # | Fixed size Since: 0.1 | ||||
Defined in Data.Bytes.Network.Internal afromRational :: Rational -> SomeNetSize d n Source # | |||||
NFData n => NFData (SomeNetSize d n) Source # | Since: 0.1 | ||||
Defined in Data.Bytes.Network.Internal rnf :: SomeNetSize d n -> () # | |||||
Show n => Show (SomeNetSize d n) Source # | Since: 0.1 | ||||
Defined in Data.Bytes.Network.Internal showsPrec :: Int -> SomeNetSize d n -> ShowS # show :: SomeNetSize d n -> String # showList :: [SomeNetSize d n] -> ShowS # | |||||
(Eq n, FromInteger n, MGroup n) => Eq (SomeNetSize d n) Source # | Since: 0.1 | ||||
Defined in Data.Bytes.Network.Internal (==) :: 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 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 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 convert_ :: forall (t :: Size). SingSize 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
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
toRaw :: SomeNetSize d n -> Raw (SomeNetSize d n) Source # | |||||
SingDirection d => Directed (SomeNetSize d n) Source # | Since: 0.1 | ||||
Defined in Data.Bytes.Network.Internal
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
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 (.*) :: 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 (.%) :: 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, SingSize 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 Int
MkNetBytes (MkBytes 70000)
Since: 0.1
someNetSizeToSDirection :: forall (d :: Direction) n. SingDirection d => SomeNetSize d n -> SDirection d Source #
Retrieves the SingDirection
witness. Can be used to recover the
Direction
.
Since: 0.1
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 SomeNetDir
s (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 x
True>>>
hideDirection x == hideDirection y
False
Notice no Ord
instance is provided, as we provide no ordering for
Direction
.
Since: 0.1
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 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 labelOptic :: Optic k NoIx (SomeNetDir s n) (SomeNetDir s n) a b Source # | |||||
Functor (SomeNetDir s) Source # | Since: 0.1 | ||||
Defined in Data.Bytes.Network.Internal fmap :: (a -> b) -> SomeNetDir s a -> SomeNetDir s b # (<$) :: a -> SomeNetDir s b -> SomeNetDir s a # | |||||
Foldable (SomeNetDir s) Source # | Since: 0.1 | ||||
Defined in Data.Bytes.Network.Internal 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 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) # | |||||
Normed n => Normed (SomeNetDir s n) Source # | Since: 0.1 | ||||
Defined in Data.Bytes.Network.Internal norm :: SomeNetDir s n -> SomeNetDir s n Source # | |||||
NFData n => NFData (SomeNetDir s n) Source # | Since: 0.1 | ||||
Defined in Data.Bytes.Network.Internal rnf :: SomeNetDir s n -> () # | |||||
Show n => Show (SomeNetDir s n) Source # | Since: 0.1 | ||||
Defined in Data.Bytes.Network.Internal showsPrec :: Int -> SomeNetDir s n -> ShowS # show :: SomeNetDir s n -> String # showList :: [SomeNetDir s n] -> ShowS # | |||||
(Eq n, FromInteger n, SingSize s) => Eq (SomeNetDir s n) Source # | Since: 0.1 | ||||
Defined in Data.Bytes.Network.Internal (==) :: SomeNetDir s n -> SomeNetDir s n -> Bool # (/=) :: SomeNetDir s n -> SomeNetDir s n -> Bool # | |||||
(FromInteger n, Hashable n, MGroup n, SingSize s) => Hashable (SomeNetDir s n) Source # | Since: 0.1 | ||||
Defined in Data.Bytes.Network.Internal hashWithSalt :: Int -> SomeNetDir s n -> Int Source # hash :: SomeNetDir s n -> Int Source # | |||||
(FromInteger n, MGroup n, SingSize s) => Conversion (SomeNetDir s n) Source # | Since: 0.1 | ||||
Defined in Data.Bytes.Network.Internal convert_ :: forall (t :: Size). SingSize t => SomeNetDir s n -> Converted t (SomeNetDir s n) Source # | |||||
(FromInteger n, MGroup n, Normed n, Ord n, SingSize s) => Normalize (SomeNetDir s n) Source # | Since: 0.1 | ||||
Defined in Data.Bytes.Network.Internal
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
toRaw :: SomeNetDir s n -> Raw (SomeNetDir s n) Source # | |||||
Directed (SomeNetDir s n) Source # | Since: 0.1 | ||||
Defined in Data.Bytes.Network.Internal
directionOf :: SomeNetDir s n -> Direction Source # hideDirection :: SomeNetDir s n -> HideDirection (SomeNetDir s n) Source # | |||||
SingSize s => Sized (SomeNetDir s n) Source # | Since: 0.1 | ||||
Defined in Data.Bytes.Network.Internal
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 (.*) :: 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 (.%) :: 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. SingDirection 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. SingSize 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
MkSomeNet :: forall (d :: Direction) (s :: Size) n. SDirection d -> SSize s -> NetBytes d s n -> SomeNet n | Since: 0.1 |
Instances
Functor SomeNet Source # | Since: 0.1 | ||||
Foldable SomeNet Source # | Since: 0.1 | ||||
Defined in Data.Bytes.Network.Internal 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 | ||||
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 | ||||
NFData n => NFData (SomeNet n) Source # | Since: 0.1 | ||||
Defined in Data.Bytes.Network.Internal | |||||
Show n => Show (SomeNet n) Source # | Since: 0.1 | ||||
(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
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. (SingDirection d, SingSize 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