| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Witch.Casting
Documentation
newtype Casting source target Source #
This type mostly exists to make it easier to derive instances through
some other type. It does this by leaning on the Cast type class. For
example, consider this data type:
data Toggle = Off | On
instance Cast Toggle String where
cast toggle = case toggle of
Off -> "off"
On -> "on"If you wanted to implement a Show instance for Toggle by going through
a String, you would need to write something like this:
instance Show Toggle where show = show . into @String
That may not very complicated, but at the same time it is not very
interesting. And it can be tricky if you want to keep other instances (like
Read) in sync. That's where the Casting type comes in! You can
derive the above instance like so:
data Toggle = Off | On deriving Show via Casting Toggle String
Constructors
| Casting source |
Instances
| Cast s (Casting s t) Source # | Uses |
Defined in Witch.Casting | |
| (Cast t s, Bounded t) => Bounded (Casting s t) Source # | |
| (Cast s t, Cast t s, Enum t) => Enum (Casting s t) Source # | |
Defined in Witch.Casting Methods succ :: Casting s t -> Casting s t # pred :: Casting s t -> Casting s t # toEnum :: Int -> Casting s t # fromEnum :: Casting s t -> Int # enumFrom :: Casting s t -> [Casting s t] # enumFromThen :: Casting s t -> Casting s t -> [Casting s t] # enumFromTo :: Casting s t -> Casting s t -> [Casting s t] # enumFromThenTo :: Casting s t -> Casting s t -> Casting s t -> [Casting s t] # | |
| (Cast s t, Eq t) => Eq (Casting s t) Source # | |
| (Cast s t, Ord t) => Ord (Casting s t) Source # | |
Defined in Witch.Casting | |
| (Cast t s, Read t) => Read (Casting s t) Source # | |
| (Cast s t, Show t) => Show (Casting s t) Source # | |
| Cast (Casting s t) s Source # | Uses |
Defined in Witch.Casting | |