homepage: https://indigo-lang.gitlab.io/
changelog-type: markdown
hash: ef814ce13fa6dea5b219b4a6596ee4a1f34e260c5316cb2b2e059ccd7189f484
test-bench-deps:
  fmt: -any
  morley-prelude: -any
  base: '>=4.7 && <5'
  tasty-hedgehog: -any
  morley: -any
  hedgehog: -any
  HUnit: -any
  containers: -any
  singletons: -any
  lorentz: -any
  indigo: -any
  tasty: -any
  tasty-hunit-compat: -any
  hspec-expectations: -any
maintainer: Serokell <hi@serokell.io>
synopsis: Convenient imperative eDSL over Lorentz.
changelog: |
  0.1.0.0
  =======

  Initial release.
basic-deps:
  reflection: -any
  morley-prelude: -any
  base: '>=4.7 && <5'
  morley: -any
  constraints: -any
  containers: -any
  singletons: -any
  lorentz: -any
  vinyl: -any
  template-haskell: -any
all-versions:
- 0.1.0.0
author: Serokell, Tocqueville Group
latest: 0.1.0.0
description-type: markdown
description: |
  # Indigo eDSL

  [![Hackage](https://img.shields.io/hackage/v/indigo.svg)](https://hackage.haskell.org/package/indigo)

  Indigo eDSL is a high level language for Michelson contract development.
  It is meant first and foremost to free you from the burden of manual stack
  management and supports common features of imperative languages.

  It is built on top of `Lorentz`, which in turn is built on top of `Morley`, a
  dialect that is a superset of vanilla Michelson.
  If you are interested more in the relationships between these projects you can
  start by taking a look at [Morley's README](../../README.md).

  ## Overall idea

  Michelson contracts are stack-based and often follow the repetitive pattern of
  copying the required values on top of the stack to apply an instruction to them.
  Indigo can associate variables to values in the stack and it's able to refer to
  them in order to handle this pattern automatically.

  In addition to this it can override existing variables with new values, allowing
  the manipulation of the stack to be automatic.

  Leveraging this ability, it also supports features such as: imperative statements
  (`if`, `while`, ...), expressions, operators (`+`, `||`, `==`, ...), scoped
  functions definition and errors.

  Indigo uses Morley to map values from Michelson to Haskell and to compile to
  Michelson code (or to any of the other projects in the chain mentioned above).

  ## Tutorial and documentation

  Indigo has a tutorial that you can find [here](tutorial/).

  In addition, as for the other Morley projects, it has Haddock documentation.
license-name: MIT

Update from Hackage at 2020-06-19T09:41:58Z
Update from Hackage at 2020-06-19T09:41:58Z
