Skip to content

[#663] Optimize PAIRN, DROPN and UNPAIRN

Description

Problem: Optimizer can't handle instructions working with variable number of arguments, and duplicating all rules for PAIR, DROP, UNPAIR for variable number of arguments is infeasible.

Solution: Expand PAIRN, DROPN and UNPAIRN into sequences of PAIR, DROP and UNPAIR respectively in the first optimization pass. Then merge what's left of those back.

Related issue(s)

Resolves #663 (closed) (unless I'm missing other instructions that could benefit from this treatment)

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)

Merge request reports