homepage: ''
changelog-type: markdown
hash: 9b62982c21643dfb16bf3c676b8abaedfdf30a64d9056d139c8384a250228f3f
test-bench-deps: {}
maintainer: dan.firth@homotopic.tech
synopsis: Domain modelling algebra for polysemy
changelog: |
  # Changelog for polysemy-methodology

  ## v0.1.0.0

  * Set of domain modelling tools for polysemy.
basic-deps:
  polysemy-plugin: -any
  base: '>=4.7 && <5'
  polysemy-zoo: -any
  polysemy: -any
all-versions:
- 0.1.0.0
author: Daniel Firth
latest: 0.1.0.0
description-type: markdown
description: |
  # polysemy-methodology

  polysemy-methodology provides an algebra for domain modelling in polysemy.

  A simple program might look something like this:

  ```
  prog :: Members '[ Input a
                   , Methodology a b
                   , Output b]
  prog = input @a >>= process @a @b >>= output @b
  ```

  That is, this program transforms an `Input a` into an `Output b` by way of a
  `Methodology a b` that turns `a` into `b`. We can then type apply `a` and `b`
  and connect this to `main`.

  If we have a solution readily available, we can consume a `Methodology` by
  running one of the interpreters `runMethodologyPure` or `runMethodologySem`.

  Otherwise, we can use the other interpreters in this package to break the
  problem down into components or branches and solve each section separately.
  Each interpreter will produce a new set of `Methodology`s to be solved.

  This allows you to work up a solution to a domain problem backwards, by running
  the program you intend to solve directly and using holes to guide the
  requirements.
license-name: MIT

Update from Hackage at 2020-10-28T18:28:44Z
Update from Hackage at 2020-10-28T18:28:44Z
