Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Lifting uncompilable expressions #145

Open
Ailrun opened this issue Dec 15, 2019 · 2 comments
Open

Lifting uncompilable expressions #145

Ailrun opened this issue Dec 15, 2019 · 2 comments
Assignees
Labels
discussion This issue or pull request is under a discussion enhancement New feature or request

Comments

@Ailrun
Copy link
Member

Ailrun commented Dec 15, 2019

Is your feature request related to a problem? Please describe.
The G-Machine transpiler cannot compile a few expressions:

  • partially applied data constructor expressions
  • let expressions in non-strict context
  • match expressions in non-strict context
  • lambda expressions

Those expressions cannot be compiled without extra steps like a lifting step for those expressions. Such a lifting step is not hard to implement, and it helps us to limit the types of runtime heap nodes. miniCUTE already implements a lambda lifting function, but it is only a part of aforementioned expressions.

By implementing this we can also close #57.

Describe the solution you'd like
Implementing lifting functions for other uncompilable expressions.

@Ailrun Ailrun added the enhancement New feature or request label Dec 15, 2019
@Ailrun Ailrun self-assigned this Dec 15, 2019
@Ailrun Ailrun changed the title Lifting expressions that are impossible to be compiled Lifting uncompilable expressions Dec 18, 2019
@Ailrun
Copy link
Member Author

Ailrun commented Dec 20, 2019

@Ailrun
Copy link
Member Author

Ailrun commented Apr 27, 2020

Idea: treat all others as syntactic sugars of appropriate lambda expressions, and using already-implemented lambda lifting.

@Ailrun Ailrun added the discussion This issue or pull request is under a discussion label Apr 27, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
discussion This issue or pull request is under a discussion enhancement New feature or request
Development

No branches or pull requests

1 participant