addHeader adds a header to a response. Note that it changes
the type of the value in the following ways:
- A simple value is wrapped in "Headers '[hdr]":
>>> let example0 = addHeader 5 "hi" :: Headers '[Header "someheader" Int] String;
>>> getHeaders example0
[("someheader","5")]
- A value that already has a header has its new header *prepended*
to the existing list:
>>> let example1 = addHeader 5 "hi" :: Headers '[Header "someheader" Int] String;
>>> let example2 = addHeader True example1 :: Headers '[Header "1st" Bool, Header "someheader" Int] String
>>> getHeaders example2
[("1st","true"),("someheader","5")]
Note that while in your handlers type annotations are not required,
since the type can be inferred from the API type, in other cases you
may find yourself needing to add annotations.