homepage: https://github.com/Atry/dsl#readme
changelog-type: markdown
hash: 26b6485e25a5cc5f3a5cf0c8d236b4f6998fe24252b8f307c85a09c0edb36f06
test-bench-deps:
  base: ! '>=4.7 && <5'
  doctest: -any
  containers: -any
  do-notation-dsl: -any
  doctest-discover: -any
  temporary: -any
maintainer: pop.atry@gmail.com
synopsis: An alternative to monads
changelog: ! '# Changelog for dsl


  ## Unreleased changes

'
basic-deps:
  base: ! '>=4.7 && <5'
all-versions:
- '0.1.0.0'
author: Yang Bo
latest: '0.1.0.0'
description-type: markdown
description: ! '# Dsl


  The `Prelude.>>=` combinator limits the return type as a `m b`, which cause Monads
  not composable. In order to ease this restrictions, this proposal introduces another
  type class `Dsl` for do notation.


  Motivation

  ----------


  Monads do not compose. Normally a `do` block cannot contains operators defined in
  different monad instances.


  The state of art solution is [using only one monad](http://okmij.org/ftp/Haskell/extensible/)
  `Eff`, which forwards all monadic bind operations to custom effect handlers, instead
  of defining new monads.


  However, the `Eff` approach is heavy weight than ordinary monad. It''s not very
  convenient to create an additional indirect layer for simple use cases.


  The  `Eff` approach of bypassing  `>>=` combinator is quite embarrassing. Since  `>>=`
  settles on our logo, In this proposal we present a new approach to enable multiple
  operations at once by improving  `>>=`. This proposal aims to port the approach
  used in [Dsl.scala](https://github.com/ThoughtWorksInc/Dsl.scala) to Haskell. This
  approach improves the extensibility of `>>=`.

'
license-name: BSD3

Update from Hackage at 2018-10-01T16:54:46Z
Update from Hackage at 2018-10-01T16:54:46Z
