{-# LANGUAGE DataKinds #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE MultiParamTypeClasses #-} {-# LANGUAGE RankNTypes #-} {-# LANGUAGE RoleAnnotations #-} {-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE TypeFamilies #-} {-# LANGUAGE TypeOperators #-} {-# LANGUAGE UndecidableInstances #-} {-# OPTIONS_GHC -fno-warn-orphans #-} module Servant.GDP ( module Servant.GDP.ApiNamedInput, module Servant.GDP.ProveInIsolation, ) where import Servant.GDP.ApiNamedInput import Servant.GDP.ProveInIsolation import Data.Aeson (ToJSON, toJSON) import GDP (exorcise, rename, the, type (:::), type (?), type (~~)) instance (ToJSON a) => ToJSON (a ~~ p) where toJSON :: (a ~~ p) -> Value toJSON = a -> Value forall a. ToJSON a => a -> Value toJSON (a -> Value) -> ((a ~~ p) -> a) -> (a ~~ p) -> Value forall b c a. (b -> c) -> (a -> b) -> a -> c . (a ~~ p) -> a forall d a. The d a => d -> a the instance (ToJSON a) => ToJSON (a ::: p) where toJSON :: (a ::: p) -> Value toJSON = a -> Value forall a. ToJSON a => a -> Value toJSON (a -> Value) -> ((a ::: p) -> a) -> (a ::: p) -> Value forall b c a. (b -> c) -> (a -> b) -> a -> c . (a ::: p) -> a forall a p. (a ::: p) -> a exorcise instance (ToJSON a) => ToJSON (a ? p) where toJSON :: (a ? p) -> Value toJSON a ? p x = (a ? p) -> (forall name. ((a ~~ name) ::: p name) -> Value) -> Value forall a (p :: * -> *) t. (a ? p) -> (forall name. ((a ~~ name) ::: p name) -> t) -> t rename a ? p x forall a. ToJSON a => a -> Value forall name. ((a ~~ name) ::: p name) -> Value toJSON