Hello! Andy Wingo <[email protected]> writes:
> The second option is to bootstrap from the C compiler, using an > interpreter written in C *simply to compile eval.scm*. [...] > The semantics of the Scheme `eval' should match the semantics of the > Scheme compiler, and the semantics of the C `eval' So did you look into generating the latter from the former? Or is it easier to transliterate it by hand? > Actually, Scheme does have a way to deal efficiently with multiple > arguments: SRFI-16's case-lambda. Guile needs to compile case-lambda to > appropriate bytecode in which the /callee/ -- the procedure itself -- > dispatches on its arguments, potentially raising a wrong-num-args error > itself. (Currently in the VM, the caller checks the argument count.) > This entails a change in the calling convention, and thus in the > VM and the debugging tools, and a change in Tree-IL. It's a big one. I > have the low-level bits implemented in my case-lambda branch, but it's > going to be another week or two until it's baked. Sounds interesting! I appreciate the summary (as usual) and the nice perspectives. :-) Thanks, Ludo’.
