indigo: Convenient imperative eDSL over Lorentz.

This is a package candidate release! Here you can preview how this package release will appear once published to the main package index (which can be accomplished via the 'maintain' link below). Please note that once a package has been published to the main package index it cannot be undone! Please consult the package uploading documentation for more information.

[maintain] [Publish]

Syntax and implementation of Indigo eDSL.


[Skip to Readme]

Properties

Versions 0.1.0.0, 0.2.0, 0.2.1, 0.2.2, 0.2.2, 0.3.0, 0.3.1, 0.4, 0.5.0, 0.6.0
Change log CHANGES.md
Dependencies base (>=4.7 && <5), constraints, containers, directory, lorentz, megaparsec (>=7.0.0), morley, morley-prelude, optparse-applicative, process, reflection, shelly, singletons, string-interpolate, summoner, text, vinyl, with-utf8 [details]
License MIT
Copyright 2019-2020 Tocqueville Group
Author Serokell, Tocqueville Group
Maintainer Serokell <hi@serokell.io>
Category Language
Home page https://indigo-lang.gitlab.io/
Bug tracker https://gitlab.com/morley-framework/morley/-/issues
Source repo head: git clone git@gitlab.com:morley-framework/morley.git
Uploaded by rinn7e at 2020-09-16T14:52:06Z

Modules

[Index] [Quick Jump]

Downloads

Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees


Readme for indigo-0.2.2

[back to package description]

Indigo eDSL

Hackage

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 the repo on GitLab.

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 at indigo-lang.gitlab.io.

In addition, as for the other Morley projects, it has Haddock documentation.