-
I'm trying to understand the spectrum of egg use cases and wonder if it can be a basis for a language a-la https://agraef.github.io/pure-lang/ ? |
Beta Was this translation helpful? Give feedback.
Replies: 1 comment 4 replies
-
(converted from issue #111 to discussion #112) I think it is, in theory. Some other issues have brought up a similar question (#84). However, there are currently practicalities that make it difficult to pull this off without exploding the size of the e-graph. The most important issue is that the e-graph doesn't have any native support for binding. So you if you want to support a lambda calculus-like language, you have to resort to trickery like explicit substitution to support it. Right now, I think the performance cost of doing that is prohibitive to supporting "real" programming languages. Note that egg is doing something more complicated that directed term rewriting. It's rewriting (potentially huge) families to other families, and doing this in parallel with other rewrites, all without "forgetting" the left-hand versions of any of those terms. Supporting binding in the context of e-graphs and equality saturation is still an active research area, so hopefully this changes soon! |
Beta Was this translation helpful? Give feedback.
(converted from issue #111 to discussion #112)
I think it is, in theory. Some other issues have brought up a similar question (#84). However, there are currently practicalities that make it difficult to pull this off without exploding the size of the e-graph. The most important issue is that the e-graph doesn't have any native support for binding. So you if you want to support a lambda calculus-like language, you have to resort to trickery like explicit substitution to support it. Right now, I think the performance cost of doing that is prohibitive to supporting "real" programming languages.
Note that egg is doing something more complicated that directed term rewriting. It's rewriting (po…