Conversation

I’m currently doing something very vaguely like abstract binding trees and hoping, so I’m probably going to come crawling back to this post, bleeding, in a few days
1
I cycle through these things every so often: HOAS. De Bruijn indices. Polymorphic recursion. Circular programming. Names + a goddamned Map so help me. Every time I revisit any of them, I learn a lot, but end up moving on, dissatisfied.
1
2
I use a sized env and De Bruijn indices/levels. It forces me to act when I walk under a λ or Π and I use HOAS for closures in my semantic domain, just because it is fast. I might turn to 's tricks to replace HOAS w/ an EDSL suited to closure compilation.
2
5
If I ever have to apply an explicit substitution I think of it as a personal failing, which keeps me on the straight and narrow performant path. The only real remaining culprit that feels like substitution for me is pruning meta variables during higher order pattern unification.
1
5
giving this a shot today. how do you avoid substitutions when constructing a lambda or pi type? construct in expr and then eval…? not sure what “it forces me to act when I walk under a <binder>” means, I guess
2