servant-swagger-1.1.10: Generate a Swagger/OpenAPI/OAS 2.0 specification for your servant API.

Safe HaskellNone
LanguageHaskell2010

Servant.Swagger.Internal.TypeLevel.Every

Synopsis

Documentation

>>> :set -XDataKinds
>>> :set -XFlexibleContexts
>>> :set -XGADTs
>>> :set -XRankNTypes
>>> :set -XScopedTypeVariables
>>> import GHC.TypeLits
>>> import Data.List

type family EveryTF cs x :: Constraint where ... Source #

Apply multiple constraint constructors to a type.

EveryTF '[Show, Read] a ~ (Show a, Read a)

Note that since this is a type family, you have to alway fully apply EveryTF.

For partial application of multiple constraint constructors see Every.

Equations

EveryTF '[] x = () 
EveryTF (c ': cs) x = (c x, EveryTF cs x) 

class EveryTF cs x => Every (cs :: [* -> Constraint]) (x :: *) Source #

Apply multiple constraint constructors to a type as a class.

This is different from EveryTF in that it allows partial application.

Instances
Every ([] :: [Type -> Constraint]) x Source # 
Instance details

Defined in Servant.Swagger.Internal.TypeLevel.Every

(c x, Every cs x) => Every (c ': cs) x Source # 
Instance details

Defined in Servant.Swagger.Internal.TypeLevel.Every

tmapEvery :: forall a cs p p'' xs. TMap (Every cs) xs => p cs -> (forall x p'. Every cs x => p' x -> a) -> p'' xs -> [a] Source #

Like tmap, but uses Every for multiple constraints.

>>> let zero :: forall p a. (Show a, Num a) => p a -> String; zero _ = show (0 :: a)
>>> tmapEvery (Proxy :: Proxy [Show, Num]) zero (Proxy :: Proxy [Int, Float]) :: [String]
["0","0.0"]