lorentz-0.6.1: EDSL for the Michelson Language
Safe HaskellNone
LanguageHaskell2010

Lorentz.Run

Synopsis

Documentation

data CompilationOptions Source #

Options to control Lorentz to Michelson compilation.

Constructors

CompilationOptions 

Fields

defaultCompilationOptions :: CompilationOptions Source #

Runs Michelson optimizer with default config and does not touch strings and bytes.

compileLorentz :: (inp :-> out) -> Instr (ToTs inp) (ToTs out) Source #

For use outside of Lorentz. Will use defaultCompilationOptions.

compileLorentzWithOptions :: CompilationOptions -> (inp :-> out) -> Instr (ToTs inp) (ToTs out) Source #

Compile Lorentz code, optionally running the optimizer, string and byte transformers.

data Contract cp st Source #

Code for a contract along with compilation options for the Lorentz compiler.

It is expected that a Contract is one packaged entity, wholly controlled by its author. Therefore the author should be able to set all options that control contract's behavior.

This helps ensure that a given contract will be interpreted in the same way in all environments, like production and testing.

Raw ContractCode should not be used for distribution of contracts.

Constructors

Contract 

Fields

  • cCode :: ContractCode cp st

    The contract itself.

  • cDisableInitialCast :: Bool

    Flag which defines whether compiled Michelson contract will have CAST (which drops parameter annotations) as a first instruction. Note that when flag is false, there still may be no CAST (in case when parameter type has no annotations).

  • cCompilationOptions :: CompilationOptions

    General compilation options for the Lorentz compiler.

defaultContract :: ContractCode cp st -> Contract cp st Source #

Compile contract with defaultCompilationOptions and cDisableInitialCast set to False.

compileLorentzContract :: forall cp st. (NiceParameterFull cp, NiceStorage st) => Contract cp st -> Contract (ToT cp) (ToT st) Source #

Compile a whole contract to Michelson.

Note that compiled contract can be ill-typed in terms of Michelson code when some of the compilation options are used (e.g. when ccoDisableInitialCast is True, resulted contract can be ill-typed). However, compilation with defaultContractCompilationOptions should be valid.

interpretLorentzInstr :: (IsoValuesStack inp, IsoValuesStack out) => ContractEnv -> (inp :-> out) -> Rec Identity inp -> Either MichelsonFailed (Rec Identity out) Source #

Interpret a Lorentz instruction, for test purposes. Note that this does not run the optimizer.

interpretLorentzLambda :: (IsoValue inp, IsoValue out) => ContractEnv -> Lambda inp out -> inp -> Either MichelsonFailed out Source #

Like interpretLorentzInstr, but works on lambda rather than arbitrary instruction.

analyzeLorentz :: (inp :-> out) -> AnalyzerRes Source #

Lorentz version of analyzer.