morley-0.1.0.0: README.md
# Morley: Developer tools for the Michelson Language
Morley is a library to make writing smart contracts in Michelson pleasant and
effective.
## I: A reimplementation of the Michelson Language in Haskell
- `Michelson.Untyped`: Simple data types representing Michelson smart
contracts and expresions. We use word `Untyped` to reflect that
Michelson type of corresponding Haskel values is not statically known
(e. g. there is a `Value` type which is basically dynamically typed).
- `Michelson.Typed`: These modules contain more advanced types comparing to
`Michelson.Untyped` with similar semantics. These types use `GADTs` GHC
extension and in this representation Michelson type of each value and
instruction is statically known. There are also some utilities to use this
advanced machinery.
- `Michelson.TypeCheck`: A typechecker that validates ADT's that conform to
Michelson's typing rules.
- `Michelson.Intepreter`: An intepreter for Michelson contracts which doesn't
perform any side effects.
- `Morley.Types`: Types for macros, syntactic sugar, and interpreter directives.
- `Morley.Parser` A parser to turn a `.tz` file into an ADT.
- `Morley.Runtime`: An interpreter that executes a well-typed Morley smart
contract in a sandbox.
## II: Testing tools (TBD)
- `Morley.REPL`: An interactive REPL with stack visualization.
- `Morley.QuickCheck`: QuickCheck generators for arbitary Michelson `Value`s,
`LAMBDA`s and `Contract`s.
- `Morley.Sandbox`: Simulating a more realistic network environment, multiple
smart contracts in the same sandbox.
## Issue Tracker
We use [YouTrack](https://issues.serokell.io/issues/TM) as our issue
tracker. You can login using your GitHub account to leave a comment or
create a new issue.
## For Contributors
Please see [CONTRIBUTING.md](CONTRIBUTING.md) for more information.