One of these days I want to give a compiler talk called "name lookup is the absolute worst" that's just 100 slides of screaming goat memes.
Conversation
As a counter-point, what language(s) would you say have "good" name lookup rules, where "good" ?= easy and convenient for the programmer as well as the implementer?
1
Possibly Forth. Or APL or something. Combinatory forms rather than binding forms.
2
5
Name binding is so frustrating arrrgh
1
1
I even made a thing for this, but it's slowww github.com/brendanzab/mon - was thinking of going nominal and using visitors like in Visitors Unchained… that way I can fuse traversals together… but apparently you pay for it in other ways. 😭
Eelco Visser's scope graphs are also kinda neat, but I've not studied them too closely yet! eelcovisser.org
2
1
One of the artifacts is done in Forth, which is kinda hilariously ironic: github.com/MetaBorgCube/o
1
I should note that lots of it was inspired be ' Unbound library - it was super helpful in figuring this stuff out! Even if I was going to go with a visitor-style approach, I'd want to see if I could still specify the scoping using type combinators - it's really neat!
1
2
Show replies
Replying to
Unfortunately there are several additional name lookup dimensions in many languages that don’t even have particularly clear concepts of a binding scope. Like they fade in or out depending on types & overloads & extension structure & order & ambiguity & goodness knows what else.
1
1
Indeed. That's where stuff really becomes fun and messy. Kind of almost want to do some of that stuff in the elaborator? But then you also need to think of how you want to do support for incrementalism and editors...
1
Show replies


