@@ -68,8 +68,7 @@ class BuildHeadersTo hs where
68
68
instance OVERLAPPING_ BuildHeadersTo '[] where
69
69
buildHeadersTo _ = HNil
70
70
71
- instance OVERLAPPABLE_ ( FromByteString v , BuildHeadersTo xs , KnownSymbol h
72
- , Contains h xs ~ 'False)
71
+ instance OVERLAPPABLE_ ( FromByteString v , BuildHeadersTo xs , KnownSymbol h )
73
72
=> BuildHeadersTo ((Header h v ) ': xs ) where
74
73
buildHeadersTo headers =
75
74
let wantedHeader = CI. mk . pack $ symbolVal (Proxy :: Proxy h )
@@ -89,7 +88,7 @@ class GetHeaders ls where
89
88
instance OVERLAPPING_ GetHeaders (HList '[] ) where
90
89
getHeaders _ = []
91
90
92
- instance OVERLAPPABLE_ ( KnownSymbol h , ToByteString x , GetHeaders (HList xs ))
91
+ instance OVERLAPPABLE_ ( KnownSymbol h , ToByteString x , GetHeaders (HList xs ) )
93
92
=> GetHeaders (HList (Header h x ': xs )) where
94
93
getHeaders hdrs = case hdrs of
95
94
Header val `HCons ` rest -> (headerName , toByteString' val): getHeaders rest
@@ -100,7 +99,7 @@ instance OVERLAPPABLE_ ( KnownSymbol h, ToByteString x, GetHeaders (HList xs))
100
99
instance OVERLAPPING_ GetHeaders (Headers '[] a ) where
101
100
getHeaders _ = []
102
101
103
- instance OVERLAPPABLE_ ( KnownSymbol h , GetHeaders (HList rest ), ToByteString v )
102
+ instance OVERLAPPABLE_ ( KnownSymbol h , GetHeaders (HList rest ), ToByteString v )
104
103
=> GetHeaders (Headers (Header h v ': rest ) a ) where
105
104
getHeaders hs = getHeaders $ getHeadersHList hs
106
105
@@ -112,20 +111,15 @@ class AddHeader h v orig new
112
111
addHeader :: v -> orig -> new -- ^ N.B.: The same header can't be added multiple times
113
112
114
113
115
- instance OVERLAPPING_ ( KnownSymbol h , ToByteString v , Contains h ( fst ' : rest ) ~ 'False )
114
+ instance OVERLAPPING_ ( KnownSymbol h , ToByteString v )
116
115
=> AddHeader h v (Headers (fst ': rest ) a ) (Headers (Header h v ': fst ': rest ) a ) where
117
116
addHeader a (Headers resp heads) = Headers resp (HCons (Header a) heads)
118
117
119
118
instance OVERLAPPABLE_ ( KnownSymbol h , ToByteString v
120
- , new ~ (Headers '[Header h v ] a ))
119
+ , new ~ (Headers '[Header h v ] a ) )
121
120
=> AddHeader h v a new where
122
121
addHeader a resp = Headers resp (HCons (Header a) HNil )
123
122
124
- type family Contains x xs where
125
- Contains x ((Header x a ) ': xs ) = 'True
126
- Contains x ((Header y a ) ': xs ) = Contains x xs
127
- Contains x '[] = 'False
128
-
129
123
-- $setup
130
124
-- >>> import Servant.API
131
125
-- >>> import Data.Aeson
0 commit comments