servant/servant-client-core
Oleg Grenrus 45c1cbdfd5 Refactor Stream stuff
- Introduce SourceT, which is simple variant of "correct `ListT`".
  There are another variants possible (like in `streaming`),
  but I'm not sure there's much real difference.

- Introduce `Codensity`. There's a flag if people don't want to depend
  on `kan-extensions`.

- `StreamGenerator` and `ResultStream` are both `SourceT`.
  `Stream` combinator in `servant-client` uses `Codensity` for CPS.

- Add servant-machines, servant-conduit, servant-pipes
- Add streaming cookbook: just code, no explanations.
- Add a script to run streaming 'benchmarks'
2018-11-05 15:48:47 +02:00
..
src/Servant/Client Refactor Stream stuff 2018-11-05 15:48:47 +02:00
test Move BaseUrlSpec 2017-09-14 09:54:13 -04:00
CHANGELOG.md Merge servant-generic 2018-07-05 23:21:25 +03:00
LICENSE Rewrite servant-client. 2017-09-14 09:54:13 -04:00
README.md Review fixes 2017-09-15 09:15:46 -04:00
Setup.hs stylish-haskell servant-client-core 2018-06-30 22:17:08 +03:00
servant-client-core.cabal Refactor Stream stuff 2018-11-05 15:48:47 +02:00

README.md

servant-client-core

servant

HTTP-client-agnostic client functions for servant APIs.

This library should mainly be of interest to backend- and combinator-writers.

For backend-writers

If you are creating a new backend, you'll need to:

  1. Define a RunClient instance for your datatype (call it MyMonad)
  2. Define a ClientLike instance. This will look like:
instance ClientLike (MyMonad a) (MyMonad a) where
  mkClient = id
  1. Re-export the module Servant.Client.Core.Reexport so that your end-users can be blissfully unaware of 'servant-client-core', and so each backend-package comes closer to the warm hearth of the drop-in-replacement equivalence class.

For combinator-writers

You'll need to define a new HasClient instance for your combinator. There are plenty of examples to guide you in the HasClient module.