witch-0.1.1.0: Convert values from one type into another.
Safe HaskellNone
LanguageHaskell2010

Witch.Cast

Synopsis
  • class Cast source target where
    • cast :: source -> target

Documentation

class Cast source target where Source #

This type class is for converting values from some source type into some other target type. The constraint Cast source target measn that you can convert from a value of type source into a value of type target.

This type class is for conversions that cannot fail. If your conversion can fail, consider implementing TryCast instead.

Minimal complete definition

Nothing

Methods

cast :: source -> target Source #

This method implements the conversion of a value between types. At call sites you will usually want to use from or into instead of this method.

The default implementation of this method simply calls coerce, which works for types that have the same runtime representation. This means that for newtypes you do not need to implement this method at all. For example:

>>> newtype Name = Name String
>>> instance Cast Name String
>>> instance Cast String Name

default cast :: Coercible source target => source -> target Source #

Instances

Instances details
Cast Double Float Source #

Uses realToFrac. This necessarily loses some precision.

Instance details

Defined in Witch.Instances

Methods

cast :: Double -> Float Source #

Cast Float Double Source #

Uses realToFrac.

Instance details

Defined in Witch.Instances

Methods

cast :: Float -> Double Source #

Cast Int Int64 Source #

Uses fromIntegral.

Instance details

Defined in Witch.Instances

Methods

cast :: Int -> Int64 Source #

Cast Int Integer Source #

Uses fromIntegral.

Instance details

Defined in Witch.Instances

Methods

cast :: Int -> Integer Source #

Cast Int8 Double Source #

Uses fromIntegral.

Instance details

Defined in Witch.Instances

Methods

cast :: Int8 -> Double Source #

Cast Int8 Float Source #

Uses fromIntegral.

Instance details

Defined in Witch.Instances

Methods

cast :: Int8 -> Float Source #

Cast Int8 Int Source #

Uses fromIntegral.

Instance details

Defined in Witch.Instances

Methods

cast :: Int8 -> Int Source #

Cast Int8 Int16 Source #

Uses fromIntegral.

Instance details

Defined in Witch.Instances

Methods

cast :: Int8 -> Int16 Source #

Cast Int8 Int32 Source #

Uses fromIntegral.

Instance details

Defined in Witch.Instances

Methods

cast :: Int8 -> Int32 Source #

Cast Int8 Int64 Source #

Uses fromIntegral.

Instance details

Defined in Witch.Instances

Methods

cast :: Int8 -> Int64 Source #

Cast Int8 Integer Source #

Uses fromIntegral.

Instance details

Defined in Witch.Instances

Methods

cast :: Int8 -> Integer Source #

Cast Int16 Double Source #

Uses fromIntegral.

Instance details

Defined in Witch.Instances

Methods

cast :: Int16 -> Double Source #

Cast Int16 Float Source #

Uses fromIntegral.

Instance details

Defined in Witch.Instances

Methods

cast :: Int16 -> Float Source #

Cast Int16 Int Source #

Uses fromIntegral.

Instance details

Defined in Witch.Instances

Methods

cast :: Int16 -> Int Source #

Cast Int16 Int32 Source #

Uses fromIntegral.

Instance details

Defined in Witch.Instances

Methods

cast :: Int16 -> Int32 Source #

Cast Int16 Int64 Source #

Uses fromIntegral.

Instance details

Defined in Witch.Instances

Methods

cast :: Int16 -> Int64 Source #

Cast Int16 Integer Source #

Uses fromIntegral.

Instance details

Defined in Witch.Instances

Methods

cast :: Int16 -> Integer Source #

Cast Int32 Double Source #

Uses fromIntegral.

Instance details

Defined in Witch.Instances

Methods

cast :: Int32 -> Double Source #

Cast Int32 Int64 Source #

Uses fromIntegral.

Instance details

Defined in Witch.Instances

Methods

cast :: Int32 -> Int64 Source #

Cast Int32 Integer Source #

Uses fromIntegral.

Instance details

Defined in Witch.Instances

Methods

cast :: Int32 -> Integer Source #

Cast Int64 Integer Source #

Uses fromIntegral.

Instance details

Defined in Witch.Instances

Methods

cast :: Int64 -> Integer Source #

Cast Natural Integer Source #

Uses fromIntegral.

Instance details

Defined in Witch.Instances

Methods

cast :: Natural -> Integer Source #

Cast Rational Double Source #

Uses fromRational. This necessarily loses some precision.

Instance details

Defined in Witch.Instances

Methods

cast :: Rational -> Double Source #

Cast Rational Float Source #

Uses fromRational. This necessarily loses some precision.

Instance details

Defined in Witch.Instances

Methods

cast :: Rational -> Float Source #

Cast Word Integer Source #

Uses fromIntegral.

Instance details

Defined in Witch.Instances

Methods

cast :: Word -> Integer Source #

Cast Word Natural Source #

Uses fromIntegral.

Instance details

Defined in Witch.Instances

Methods

cast :: Word -> Natural Source #

Cast Word Word64 Source #

Uses fromIntegral.

Instance details

Defined in Witch.Instances

Methods

cast :: Word -> Word64 Source #

Cast Word8 Double Source #

Uses fromIntegral.

Instance details

Defined in Witch.Instances

Methods

cast :: Word8 -> Double Source #

Cast Word8 Float Source #

Uses fromIntegral.

Instance details

Defined in Witch.Instances

Methods

cast :: Word8 -> Float Source #

Cast Word8 Int Source #

Uses fromIntegral.

Instance details

Defined in Witch.Instances

Methods

cast :: Word8 -> Int Source #

Cast Word8 Int16 Source #

Uses fromIntegral.

Instance details

Defined in Witch.Instances

Methods

cast :: Word8 -> Int16 Source #

Cast Word8 Int32 Source #

Uses fromIntegral.

Instance details

Defined in Witch.Instances

Methods

cast :: Word8 -> Int32 Source #

Cast Word8 Int64 Source #

Uses fromIntegral.

Instance details

Defined in Witch.Instances

Methods

cast :: Word8 -> Int64 Source #

Cast Word8 Integer Source #

Uses fromIntegral.

Instance details

Defined in Witch.Instances

Methods

cast :: Word8 -> Integer Source #

Cast Word8 Natural Source #

Uses fromIntegral.

Instance details

Defined in Witch.Instances

Methods

cast :: Word8 -> Natural Source #

Cast Word8 Word Source #

Uses fromIntegral.

Instance details

Defined in Witch.Instances

Methods

cast :: Word8 -> Word Source #

Cast Word8 Word16 Source #

Uses fromIntegral.

Instance details

Defined in Witch.Instances

Methods

cast :: Word8 -> Word16 Source #

Cast Word8 Word32 Source #

Uses fromIntegral.

Instance details

Defined in Witch.Instances

Methods

cast :: Word8 -> Word32 Source #

Cast Word8 Word64 Source #

Uses fromIntegral.

Instance details

Defined in Witch.Instances

Methods

cast :: Word8 -> Word64 Source #

Cast Word16 Double Source #

Uses fromIntegral.

Instance details

Defined in Witch.Instances

Methods

cast :: Word16 -> Double Source #

Cast Word16 Float Source #

Uses fromIntegral.

Instance details

Defined in Witch.Instances

Methods

cast :: Word16 -> Float Source #

Cast Word16 Int Source #

Uses fromIntegral.

Instance details

Defined in Witch.Instances

Methods

cast :: Word16 -> Int Source #

Cast Word16 Int32 Source #

Uses fromIntegral.

Instance details

Defined in Witch.Instances

Methods

cast :: Word16 -> Int32 Source #

Cast Word16 Int64 Source #

Uses fromIntegral.

Instance details

Defined in Witch.Instances

Methods

cast :: Word16 -> Int64 Source #

Cast Word16 Integer Source #

Uses fromIntegral.

Instance details

Defined in Witch.Instances

Methods

cast :: Word16 -> Integer Source #

Cast Word16 Natural Source #

Uses fromIntegral.

Instance details

Defined in Witch.Instances

Methods

cast :: Word16 -> Natural Source #

Cast Word16 Word Source #

Uses fromIntegral.

Instance details

Defined in Witch.Instances

Methods

cast :: Word16 -> Word Source #

Cast Word16 Word32 Source #

Uses fromIntegral.

Instance details

Defined in Witch.Instances

Methods

cast :: Word16 -> Word32 Source #

Cast Word16 Word64 Source #

Uses fromIntegral.

Instance details

Defined in Witch.Instances

Methods

cast :: Word16 -> Word64 Source #

Cast Word32 Double Source #

Uses fromIntegral.

Instance details

Defined in Witch.Instances

Methods

cast :: Word32 -> Double Source #

Cast Word32 Int64 Source #

Uses fromIntegral.

Instance details

Defined in Witch.Instances

Methods

cast :: Word32 -> Int64 Source #

Cast Word32 Integer Source #

Uses fromIntegral.

Instance details

Defined in Witch.Instances

Methods

cast :: Word32 -> Integer Source #

Cast Word32 Natural Source #

Uses fromIntegral.

Instance details

Defined in Witch.Instances

Methods

cast :: Word32 -> Natural Source #

Cast Word32 Word64 Source #

Uses fromIntegral.

Instance details

Defined in Witch.Instances

Methods

cast :: Word32 -> Word64 Source #

Cast Word64 Integer Source #

Uses fromIntegral.

Instance details

Defined in Witch.Instances

Methods

cast :: Word64 -> Integer Source #

Cast Word64 Natural Source #

Uses fromIntegral.

Instance details

Defined in Witch.Instances

Methods

cast :: Word64 -> Natural Source #

Cast String Text Source #

Uses pack. Some Char values cannot be represented in Text and will be replaced with '\xFFFD'.

Instance details

Defined in Witch.Instances

Methods

cast :: String -> Text Source #

Cast String Text Source #

Uses pack. Some Char values cannot be represented in Text and will be replaced with '\xFFFD'.

Instance details

Defined in Witch.Instances

Methods

cast :: String -> Text Source #

Cast ShortByteString ByteString Source #

Uses fromShort.

Instance details

Defined in Witch.Instances

Cast ByteString ByteString Source #

Uses toStrict.

Instance details

Defined in Witch.Instances

Cast ByteString ShortByteString Source #

Uses toShort.

Instance details

Defined in Witch.Instances

Cast ByteString ByteString Source #

Uses fromStrict.

Instance details

Defined in Witch.Instances

Cast Text String Source #

Uses unpack.

Instance details

Defined in Witch.Instances

Methods

cast :: Text -> String Source #

Cast Text ByteString Source #

Uses encodeUtf8.

Instance details

Defined in Witch.Instances

Methods

cast :: Text -> ByteString Source #

Cast Text Text Source #

Uses toStrict.

Instance details

Defined in Witch.Instances

Methods

cast :: Text0 -> Text Source #

Cast Text String Source #

Uses unpack.

Instance details

Defined in Witch.Instances

Methods

cast :: Text -> String Source #

Cast Text ByteString Source #

Uses encodeUtf8.

Instance details

Defined in Witch.Instances

Methods

cast :: Text -> ByteString Source #

Cast Text Text Source #

Uses fromStrict.

Instance details

Defined in Witch.Instances

Methods

cast :: Text -> Text0 Source #

Num a => Cast a (Complex a) Source #

Uses (:+) with an imaginary part of 0.

Instance details

Defined in Witch.Instances

Methods

cast :: a -> Complex a Source #

Integral a => Cast a (Ratio a) Source #

Uses (%) with a denominator of 1.

Instance details

Defined in Witch.Instances

Methods

cast :: a -> Ratio a Source #

Cast ShortByteString [Word8] Source #

Uses unpack.

Instance details

Defined in Witch.Instances

Cast ByteString [Word8] Source #

Uses unpack.

Instance details

Defined in Witch.Instances

Methods

cast :: ByteString -> [Word8] Source #

Cast ByteString [Word8] Source #

Uses unpack.

Instance details

Defined in Witch.Instances

Methods

cast :: ByteString -> [Word8] Source #

Cast IntSet [Int] Source #

Uses toAscList.

Instance details

Defined in Witch.Instances

Methods

cast :: IntSet -> [Int] Source #

Cast Integer (Fixed a) Source #

Uses MkFixed. This means cast 2 :: Centi is 0.02 rather than 2.00.

Instance details

Defined in Witch.Instances

Methods

cast :: Integer -> Fixed a Source #

Cast [Int] IntSet Source #

Uses fromList.

Instance details

Defined in Witch.Instances

Methods

cast :: [Int] -> IntSet Source #

Cast [Word8] ShortByteString Source #

Uses pack.

Instance details

Defined in Witch.Instances

Cast [Word8] ByteString Source #

Uses pack.

Instance details

Defined in Witch.Instances

Methods

cast :: [Word8] -> ByteString Source #

Cast [Word8] ByteString Source #

Uses pack.

Instance details

Defined in Witch.Instances

Methods

cast :: [Word8] -> ByteString Source #

Cast [(Int, v)] (IntMap v) Source #

Uses fromList. If there are duplicate keys, later values will overwrite earlier ones.

Instance details

Defined in Witch.Instances

Methods

cast :: [(Int, v)] -> IntMap v Source #

Cast [a] (Seq a) Source #

Uses fromList.

Instance details

Defined in Witch.Instances

Methods

cast :: [a] -> Seq a Source #

Ord a => Cast [a] (Set a) Source #

Uses fromList.

Instance details

Defined in Witch.Instances

Methods

cast :: [a] -> Set a Source #

Cast (NonEmpty a) [a] Source #

Uses toList.

Instance details

Defined in Witch.Instances

Methods

cast :: NonEmpty a -> [a] Source #

Cast (IntMap v) [(Int, v)] Source #

Uses toAscList.

Instance details

Defined in Witch.Instances

Methods

cast :: IntMap v -> [(Int, v)] Source #

Cast (Seq a) [a] Source #

Uses toList.

Instance details

Defined in Witch.Instances

Methods

cast :: Seq a -> [a] Source #

Cast (Set a) [a] Source #

Uses toAscList.

Instance details

Defined in Witch.Instances

Methods

cast :: Set a -> [a] Source #

Ord k => Cast [(k, v)] (Map k v) Source #

Uses fromList. If there are duplicate keys, later values will overwrite earlier ones.

Instance details

Defined in Witch.Instances

Methods

cast :: [(k, v)] -> Map k v Source #

Cast (Fixed a) Integer Source #

Uses MkFixed. This means cast (3.00 :: Centi) is 300 rather than 3.

Instance details

Defined in Witch.Instances

Methods

cast :: Fixed a -> Integer Source #

Cast (Map k v) [(k, v)] Source #

Uses toAscList.

Instance details

Defined in Witch.Instances

Methods

cast :: Map k v -> [(k, v)] Source #

Cast (TryCastException s t0) (TryCastException s t1) Source # 
Instance details

Defined in Witch.Instances