| Copyright | (C) 2021 Ryan Scott |
|---|---|
| License | BSD-style (see the file LICENSE) |
| Maintainer | Ryan Scott |
| Stability | Experimental |
| Portability | GHC |
| Safe Haskell | Trustworthy |
| Language | GHC2021 |
Data.Eliminator.Monoid
Description
Eliminator functions for data types in Data.Monoid. All of these are re-exported from Data.Eliminator with the following exceptions:
FirstandLastare not re-exported from Data.Eliminator, as they clash with eliminators of the same names in Data.Eliminator.Functor and Data.Eliminator.Semigroup.SumandProductare not re-exported from Data.Eliminator, as they clash with eliminators of the same names in Data.Eliminator.Functor.
Documentation
elimAll :: forall (p :: All ~> Type) (s :: All). Sing s -> (forall (f0 :: Bool). Sing f0 -> Apply p ('All f0)) -> Apply p s Source #
type family ElimAll (p :: All ~> Type) (s :: All) (p1 :: forall (f0 :: Bool) -> Apply p ('All f0)) :: Apply p s where ... Source #
elimAny :: forall (p :: Any ~> Type) (s :: Any). Sing s -> (forall (f0 :: Bool). Sing f0 -> Apply p ('Any f0)) -> Apply p s Source #
type family ElimAny (p :: Any ~> Type) (s :: Any) (p1 :: forall (f0 :: Bool) -> Apply p ('Any f0)) :: Apply p s where ... Source #
elimDual :: forall a (p :: Dual a ~> Type) (s :: Dual a). Sing s -> (forall (f0 :: a). Sing f0 -> Apply p ('Dual f0)) -> Apply p s Source #
type family ElimDual (p :: Dual a ~> Type) (s :: Dual a) (p1 :: forall (f0 :: a) -> Apply p ('Dual f0)) :: Apply p s where ... Source #
elimFirst :: forall a (p :: First a ~> Type) (s :: First a). Sing s -> (forall (f0 :: Maybe a). Sing f0 -> Apply p ('First f0)) -> Apply p s Source #
type family ElimFirst (p :: First a ~> Type) (s :: First a) (p1 :: forall (f0 :: Maybe a) -> Apply p ('First f0)) :: Apply p s where ... Source #
elimLast :: forall a (p :: Last a ~> Type) (s :: Last a). Sing s -> (forall (f0 :: Maybe a). Sing f0 -> Apply p ('Last f0)) -> Apply p s Source #
type family ElimLast (p :: Last a ~> Type) (s :: Last a) (p1 :: forall (f0 :: Maybe a) -> Apply p ('Last f0)) :: Apply p s where ... Source #
elimProduct :: forall a (p :: Product a ~> Type) (s :: Product a). Sing s -> (forall (f0 :: a). Sing f0 -> Apply p ('Product f0)) -> Apply p s Source #
type family ElimProduct (p :: Product a ~> Type) (s :: Product a) (p1 :: forall (f0 :: a) -> Apply p ('Product f0)) :: Apply p s where ... Source #