Copyright | (C) 2020 Csongor Kiss |
---|---|
License | BSD3 |
Maintainer | Csongor Kiss <kiss.csongor.kiss@gmail.com> |
Stability | experimental |
Portability | non-portable |
Safe Haskell | None |
Language | Haskell2010 |
Documentation
type family HasTotalFieldP (field :: Symbol) f :: Maybe Type where ... Source #
HasTotalFieldP field (S1 (MetaSel (Just field) _ _ _) (Rec0 t)) = Just t | |
HasTotalFieldP field (l :*: r) = Alt (HasTotalFieldP field l) (HasTotalFieldP field r) | |
HasTotalFieldP field (l :+: r) = Both (HasTotalFieldP field l) (HasTotalFieldP field r) | |
HasTotalFieldP field (S1 _ _) = Nothing | |
HasTotalFieldP field (C1 _ f) = HasTotalFieldP field f | |
HasTotalFieldP field (D1 _ f) = HasTotalFieldP field f | |
HasTotalFieldP field (K1 _ _) = Nothing | |
HasTotalFieldP field U1 = Nothing | |
HasTotalFieldP field V1 = Nothing |
type family HasTotalTypeP (typ :: Type) f :: Maybe Type where ... Source #
HasTotalTypeP typ (S1 _ (K1 _ typ)) = Just typ | |
HasTotalTypeP typ (l :*: r) = Alt (HasTotalTypeP typ l) (HasTotalTypeP typ r) | |
HasTotalTypeP typ (l :+: r) = Both (HasTotalTypeP typ l) (HasTotalTypeP typ r) | |
HasTotalTypeP typ (S1 _ _) = Nothing | |
HasTotalTypeP typ (C1 _ f) = HasTotalTypeP typ f | |
HasTotalTypeP typ (D1 _ f) = HasTotalTypeP typ f | |
HasTotalTypeP typ (K1 _ _) = Nothing | |
HasTotalTypeP typ U1 = Nothing | |
HasTotalTypeP typ V1 = Nothing |
type family HasTotalPositionP (pos :: Nat) f :: Maybe Type where ... Source #
HasTotalPositionP pos (S1 _ (K1 (Pos pos) t)) = Just t | |
HasTotalPositionP pos (l :*: r) = Alt (HasTotalPositionP pos l) (HasTotalPositionP pos r) | |
HasTotalPositionP pos (l :+: r) = Both (HasTotalPositionP pos l) (HasTotalPositionP pos r) | |
HasTotalPositionP pos (S1 _ _) = Nothing | |
HasTotalPositionP pos (C1 _ f) = HasTotalPositionP pos f | |
HasTotalPositionP pos (D1 _ f) = HasTotalPositionP pos f | |
HasTotalPositionP pos (K1 _ _) = Nothing | |
HasTotalPositionP pos U1 = Nothing | |
HasTotalPositionP pos V1 = Nothing |
type family HasPartialTypeP a f :: Bool where ... Source #
HasPartialTypeP t (l :+: r) = HasPartialTypeP t l || HasPartialTypeP t r | |
HasPartialTypeP t (C1 m f) = t == GTypes f | |
HasPartialTypeP t (M1 _ _ f) = HasPartialTypeP t f | |
HasPartialTypeP t _ = False |