Synopsis
- type Columnable' a = (Typeable a, Show a, Ord a, Eq a, Read a, NFData a)
- data Rep
- type family If (cond :: Bool) (yes :: k) (no :: k) :: k where ...
- type family Unboxable a :: Bool where ...
- type family Numeric a :: Bool where ...
- type family KindOf a :: Rep where ...
- data SBool (b :: Bool) where
- class SBoolI (b :: Bool) where
- sUnbox :: SBoolI (Unboxable a) => SBool (Unboxable a)
- sNumeric :: SBoolI (Numeric a) => SBool (Numeric a)
- type family When (flag :: Bool) c where ...
- type UnboxIf a = When (Unboxable a) (Unbox a)
- type family IntegralTypes a :: Bool where ...
- sIntegral :: SBoolI (IntegralTypes a) => SBool (IntegralTypes a)
- type IntegralIf a = When (IntegralTypes a) (Integral a)
- type family FloatingTypes a :: Bool where ...
- sFloating :: SBoolI (FloatingTypes a) => SBool (FloatingTypes a)
- type FloatingIf a = When (FloatingTypes a) (Real a, Fractional a)
- type family Promote a b where ...
- type family PromoteDiv a b where ...
Documentation
A type with column representations used to select the
"right" representation when specializing the toColumn function.
type family Unboxable a :: Bool where ... Source #
All unboxable types (according to the vector package).
class SBoolI (b :: Bool) where Source #
The runtime witness for our type-level branching.
Instances
Instances details
type family Promote a b where ... Source #
Numeric type promotion: resolves the common type for mixed arithmetic. Double dominates over Float/Int; Float dominates over Int; same types stay unchanged.
type family PromoteDiv a b where ... Source #
Like Promote, but integral × integral → Double for use with ./ .
Double/Float still dominate; any two integral types (same or mixed) become Double.