Hi Noah, And as is more often the case, sorry for the delay!
Noah Lavine <noah.b.lav...@gmail.com> skribis: > It is a propagation network. Basically you have a graph of Tree-IL > nodes, where each Tree-IL node is connected to its parent, its > children, and optionally other nodes (a variable is connected to the > place it was declared. A primitive function is connected to the error > continuation it could jump to). The compiler propagates information > along the edges of this graph, attempting to find the minimum set of > possible values for each variable and each jump target. It also > performs partial evaluation as a special case of this. > > What I have described also seems to be how Hindley-Milner type > inference works (although I think we can do a bit better than standard > Hindley-Milner systems). Does this seem like a good design for the > static analyzer portion? I’m not an expert in that area, but it does look sensible to me at first sight. > One big oversight that I know of is that this doesn't do any sort of > specialization. What if your static analyzer was plugged after the peval run? I expect part of it would be redundant with peval, but for a start we could live with the code redundancy, and look at factorizing it later. WDYT? [...] > And finally, a fun thing. The current best Scheme compiler (that I > know of) is called Stalin. Therefore, I suggest that our compiler be > called "Stallman", after our fearless leader (whose name also starts > with "s"). :-) Heheh. :-) Thanks, Ludo’.