Skip to content

Preparatory steps for common subexpressions elimination optimisation. Part 1

Ilya Peresadin requested to merge pva/#130-implement-cse-part-1 into master

Description

This PR makes initial steps for #130 (moved) , especially two main things which it introduces: frontend Freer monad for Indigo code, and hiding input and output stacks from external types (from the Freer monad). A bit motivation: it's impossible to make any under hood manipulation with stack (which are necessary for optimisations) when output stack is exposed (see more explanation in commit messages), so we have to hide them first.

Also, this changes resolve #40 (closed) (which was under consideration, but it happened to have to be done before further progress with #130 (moved)).

Resolves #40 (closed)

Checklist for your Merge Request

Related changes (conditional)

  • Tests (see short guidelines)

    • If I added new functionality, I added tests covering it.
    • If I fixed a bug, I added a regression test to prevent the bug from silently reappearing again.
  • Documentation

    • I checked whether I should update the docs and did so if necessary:
    • I updated changelog files of all affected packages released to Hackage if my changes are externally visible.

Stylistic guide (mandatory)

Edited by Ilya Peresadin

Merge request reports