basement-0.0.16: Foundation scrap box of array & string

License | BSD-style
Maintainer | Haskell Foundation
Safe Haskell | Safe-Inferred
Language | Haskell2010

Basement.From

Description

Flexible Type convertion

From is multi parameter type class that allow converting from a to b.

Only type that are valid to convert to another type should be From instance; otherwise TryFrom should be used.

Into (resp TryInto) allows the contrary instances to be able to specify the destination type before the source. This is practical with TypeApplication

Synopsis

- class From a b where
  - from :: a -> b
- type Into b a = From a b
- class TryFrom a b where
  - tryFrom :: a -> Maybe b
- type TryInto b a = TryFrom a b
- into :: Into b a => a -> b
- tryInto :: TryInto b a => a -> Maybe b

# Documentation

class From a b where Source #

Class of things that can be converted from a to b.

In a valid instance, the source should be always representable by the destination, otherwise the instance should be using `TryFrom`

Methods

from :: a -> b Source #

#### Instances

Instances details

From Int16 Int32 Source # |
Instance details Defined in Basement.From Methods from :: Int16 -> Int32 Source #
From Int16 Int64 Source # |
Instance details Defined in Basement.From Methods from :: Int16 -> Int64 Source #
From Int16 Int Source # |
Instance details Defined in Basement.From Methods from :: Int16 -> Int Source #
From Int32 Int64 Source # |
Instance details Defined in Basement.From Methods from :: Int32 -> Int64 Source #
From Int32 Int Source # |
Instance details Defined in Basement.From Methods from :: Int32 -> Int Source #
From Int8 Int16 Source # |
Instance details Defined in Basement.From Methods from :: Int8 -> Int16 Source #
From Int8 Int32 Source # |
Instance details Defined in Basement.From Methods from :: Int8 -> Int32 Source #
From Int8 Int64 Source # |
Instance details Defined in Basement.From Methods from :: Int8 -> Int64 Source #
From Int8 Int Source # |
Instance details Defined in Basement.From Methods from :: Int8 -> Int Source #
From Word16 Int32 Source # |
Instance details Defined in Basement.From Methods from :: Word16 -> Int32 Source #
From Word16 Int64 Source # |
Instance details Defined in Basement.From Methods from :: Word16 -> Int64 Source #
From Word16 Word32 Source # |
Instance details Defined in Basement.From Methods from :: Word16 -> Word32 Source #
From Word16 Word64 Source # |
Instance details Defined in Basement.From Methods from :: Word16 -> Word64 Source #
From Word16 Word128 Source # |
Instance details Defined in Basement.From Methods from :: Word16 -> Word128 Source #
From Word16 Word256 Source # |
Instance details Defined in Basement.From Methods from :: Word16 -> Word256 Source #
From Word16 Int Source # |
Instance details Defined in Basement.From Methods from :: Word16 -> Int Source #
From Word16 Word Source # |
Instance details Defined in Basement.From Methods from :: Word16 -> Word Source #
From Word32 Int64 Source # |
Instance details Defined in Basement.From Methods from :: Word32 -> Int64 Source #
From Word32 Word64 Source # |
Instance details Defined in Basement.From Methods from :: Word32 -> Word64 Source #
From Word32 Word128 Source # |
Instance details Defined in Basement.From Methods from :: Word32 -> Word128 Source #
From Word32 Word256 Source # |
Instance details Defined in Basement.From Methods from :: Word32 -> Word256 Source #
From Word32 Int Source # |
Instance details Defined in Basement.From Methods from :: Word32 -> Int Source #
From Word32 Word Source # |
Instance details Defined in Basement.From Methods from :: Word32 -> Word Source #
From Word64 Word128 Source # |
Instance details Defined in Basement.From Methods from :: Word64 -> Word128 Source #
From Word64 Word256 Source # |
Instance details Defined in Basement.From Methods from :: Word64 -> Word256 Source #
From Word8 Int16 Source # |
Instance details Defined in Basement.From Methods from :: Word8 -> Int16 Source #
From Word8 Int32 Source # |
Instance details Defined in Basement.From Methods from :: Word8 -> Int32 Source #
From Word8 Int64 Source # |
Instance details Defined in Basement.From Methods from :: Word8 -> Int64 Source #
From Word8 Word16 Source # |
Instance details Defined in Basement.From Methods from :: Word8 -> Word16 Source #
From Word8 Word32 Source # |
Instance details Defined in Basement.From Methods from :: Word8 -> Word32 Source #
From Word8 Word64 Source # |
Instance details Defined in Basement.From Methods from :: Word8 -> Word64 Source #
From Word8 Word128 Source # |
Instance details Defined in Basement.From Methods from :: Word8 -> Word128 Source #
From Word8 Word256 Source # |
Instance details Defined in Basement.From Methods from :: Word8 -> Word256 Source #
From Word8 Int Source # |
Instance details Defined in Basement.From Methods from :: Word8 -> Int Source #
From Word8 Word Source # |
Instance details Defined in Basement.From Methods from :: Word8 -> Word Source #
From AsciiString String Source # |
Instance details Defined in Basement.From Methods from :: AsciiString -> String Source #
From Word128 Word256 Source # |
Instance details Defined in Basement.From Methods from :: Word128 -> Word256 Source #
From Int Int64 Source # |
Instance details Defined in Basement.From Methods from :: Int -> Int64 Source #
From Word Word64 Source # |
Instance details Defined in Basement.From Methods from :: Word -> Word64 Source #
From a a Source # |
Instance details Defined in Basement.From Methods from :: a -> a Source #
IsIntegral n => From n Integer Source # |
Instance details Defined in Basement.From Methods from :: n -> Integer Source #
IsNatural n => From n Natural Source # |
Instance details Defined in Basement.From Methods from :: n -> Natural Source #
From AsciiString (UArray Word8) Source # |
Instance details Defined in Basement.From Methods from :: AsciiString -> UArray Word8 Source #
From String (UArray Word8) Source # |
Instance details Defined in Basement.From Methods from :: String -> UArray Word8 Source #
From Word (CountOf ty) Source # |
Instance details Defined in Basement.From Methods from :: Word -> CountOf ty Source #
From Word (Offset ty) Source # |
Instance details Defined in Basement.From Methods from :: Word -> Offset ty Source #
(KnownNat n, NatWithinBound Word16 n) => From (Zn n) Word16 Source # |
Instance details Defined in Basement.From Methods from :: Zn n -> Word16 Source #
(KnownNat n, NatWithinBound Word32 n) => From (Zn n) Word32 Source # |
Instance details Defined in Basement.From Methods from :: Zn n -> Word32 Source #
(KnownNat n, NatWithinBound Word64 n) => From (Zn n) Word64 Source # |
Instance details Defined in Basement.From Methods from :: Zn n -> Word64 Source #
(KnownNat n, NatWithinBound Word8 n) => From (Zn n) Word8 Source # |
Instance details Defined in Basement.From Methods from :: Zn n -> Word8 Source #
(KnownNat n, NatWithinBound Word128 n) => From (Zn n) Word128 Source # |
Instance details Defined in Basement.From Methods from :: Zn n -> Word128 Source #
(KnownNat n, NatWithinBound Word256 n) => From (Zn n) Word256 Source # |
Instance details Defined in Basement.From Methods from :: Zn n -> Word256 Source #
(KnownNat n, NatWithinBound Word16 n) => From (Zn64 n) Word16 Source # |
Instance details Defined in Basement.From Methods from :: Zn64 n -> Word16 Source #
(KnownNat n, NatWithinBound Word32 n) => From (Zn64 n) Word32 Source # |
Instance details Defined in Basement.From Methods from :: Zn64 n -> Word32 Source #
From (Zn64 n) Word64 Source # |
Instance details Defined in Basement.From Methods from :: Zn64 n -> Word64 Source #
(KnownNat n, NatWithinBound Word8 n) => From (Zn64 n) Word8 Source # |
Instance details Defined in Basement.From Methods from :: Zn64 n -> Word8 Source #
From (Zn64 n) Word128 Source # |
Instance details Defined in Basement.From Methods from :: Zn64 n -> Word128 Source #
From (Zn64 n) Word256 Source # |
Instance details Defined in Basement.From Methods from :: Zn64 n -> Word256 Source #
From (CountOf ty) Int Source # |
Instance details Defined in Basement.From Methods from :: CountOf ty -> Int Source #
From (CountOf ty) Word Source # |
Instance details Defined in Basement.From Methods from :: CountOf ty -> Word Source #
PrimType ty => From (Block ty) (UArray ty) Source # |
Instance details Defined in Basement.From Methods from :: Block ty -> UArray ty Source #
(KnownNat n, NatWithinBound Word64 n) => From (Zn n) (Zn64 n) Source # |
Instance details Defined in Basement.From Methods from :: Zn n -> Zn64 n Source #
KnownNat n => From (Zn64 n) (Zn n) Source # |
Instance details Defined in Basement.From Methods from :: Zn64 n -> Zn n Source #
PrimType ty => From (Array ty) (Block ty) Source # |
Instance details Defined in Basement.From Methods from :: Array ty -> Block ty Source #
PrimType ty => From (Array ty) (UArray ty) Source # |
Instance details Defined in Basement.From Methods from :: Array ty -> UArray ty Source #
PrimType ty => From (UArray ty) (Block ty) Source # |
Instance details Defined in Basement.From Methods from :: UArray ty -> Block ty Source #
PrimType ty => From (UArray ty) (Array ty) Source # |
Instance details Defined in Basement.From Methods from :: UArray ty -> Array ty Source #
From (Maybe a) (Either () a) Source # |
Instance details Defined in Basement.From Methods from :: Maybe a -> Either () a Source #
From (BlockN n ty) (Block ty) Source # |
Instance details Defined in Basement.From Methods from :: BlockN n ty -> Block ty Source #
(NatWithinBound Int n, PrimType ty) => From (BlockN n ty) (Array ty) Source # |
Instance details Defined in Basement.From Methods from :: BlockN n ty -> Array ty Source #
(NatWithinBound Int n, PrimType ty) => From (BlockN n ty) (UArray ty) Source # |
Instance details Defined in Basement.From Methods from :: BlockN n ty -> UArray ty Source #
From (Either a b) (These a b) Source # |
Instance details Defined in Basement.From Methods from :: Either a b -> These a b Source #
(PrimType a, PrimType b, KnownNat n, KnownNat m, (PrimSize b * m) ~ (PrimSize a * n)) => From (BlockN n a) (BlockN m b) Source # |
Instance details Defined in Basement.From Methods from :: BlockN n a -> BlockN m b Source #

type Into b a = From a b Source #

class TryFrom a b where Source #

Class of things that can mostly be converted from a to b, but with possible error cases.

Methods

tryFrom :: a -> Maybe b Source #

#### Instances

Instances details

TryFrom Int (CountOf ty) Source # |
Instance details Defined in Basement.From Methods tryFrom :: Int -> Maybe (CountOf ty) Source #
TryFrom Int (Offset ty) Source # |
Instance details Defined in Basement.From Methods tryFrom :: Int -> Maybe (Offset ty) Source #
TryFrom (UArray Word8) String Source # |
Instance details Defined in Basement.From Methods tryFrom :: UArray Word8 -> Maybe String Source #
(NatWithinBound (CountOf ty) n, KnownNat n, PrimType ty) => TryFrom (Block ty) (BlockN n ty) Source # |
Instance details Defined in Basement.From Methods tryFrom :: Block ty -> Maybe (BlockN n ty) Source #
(NatWithinBound (CountOf ty) n, KnownNat n, PrimType ty) => TryFrom (Array ty) (BlockN n ty) Source # |
Instance details Defined in Basement.From Methods tryFrom :: Array ty -> Maybe (BlockN n ty) Source #
(NatWithinBound (CountOf ty) n, KnownNat n, PrimType ty) => TryFrom (UArray ty) (BlockN n ty) Source # |
Instance details Defined in Basement.From Methods tryFrom :: UArray ty -> Maybe (BlockN n ty) Source #

type TryInto b a = TryFrom a b Source #

into :: Into b a => a -> b Source #

Same as from but reverse the type variable so that the destination type can be specified first

e.g. converting:

from `_` Word (10 :: Int)

into @Word (10 :: Int)

tryInto :: TryInto b a => a -> Maybe b Source #

same as tryFrom but reversed