CakeML / CakeML/pure

Improve Box in EnvLang

Open
#39 0 comments 0 reactions 0 assignees View on GitHub
back end enhancement
Dominant language
Standard ML
Stars
44
Forks
5
PR merge metrics
No merged PRs in 30d

Description

Currently, EnvLang's `Box` expression is:
```
exp = ... | Var vname | Box exp | ...
```
but it should arguably be:
```
exp = ... | Var vname | Box vname | ...
```
because one can always do `Let (SOME v) e (Box v)` where one would have done `Box e` before.

This issue is about three changes:
1. Making the change above to the expression syntax of EnvLang.
2. Allowing `Box` in `Letrec`, which currently only allows `Delay` and `Lam`.
3. Making sure that #37 replaces `Delay (Var v)` with `Box v` also in `Letrec`.

Contributor guide

No contributing guide indexed for this repository

Research direction

Start by locating the EnvLang expression definition and the Letrec handling for Delay and Lam. Inspect the related changes from #37, then update the Box syntax and Letrec cases so the requested Box form and Delay-to-Box replacement are covered; done means all three listed changes are implemented and validated by the existing tests.

Written by the indexing model from the issue text.

Assessment

Domain
compilers
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.