| Age | Commit message (Collapse) | Author | Files | Lines |
|
I also cleaned everything up a lot. Maybe there are still bugs because
the test coverage is awful, but for now I'm happy to be done.
|
|
Computing length each time is very unnecessary.
|
|
|
|
It works!! At least it passes all the test cases.
Next I will:
1. finish the builtins,
2. add a conversion to IR2 in continuation passing style,
3. add a compiler from IR2 to bytecode,
4. and add an option to the frontend compiler to generate a
standalone executable.
|
|
Committing it because it compiles. I have to write tests and debug
it still.
|
|
This makes the control flow more clear, and eliminates the need to scan
the pattern twice. It also makes it easier to add new forms by
consolidating the pattern logic in one procedure.
|
|
I was reading about the difference, and := does what you want more often
than not.
|
|
Before we were assuming keys could be compared with eqv?. But it seems
like that assumption isn't true when we want to hold identifiers in the
hash map.
|
|
|
|
|
|
This half-finished macro expander is the most satisfying piece of code I
have ever written.
|
|
The current implementation repeats the bindings twice, but I guess it's
fine. It seems to work.
|
|
I'm not sure the syntax is great, but it's very helpful to have.
|
|
|
|
Not very scheme.
|
|
We can lean more on the power of scheme to make the testing framework a
little less verbose.
|
|
I still don't understand this snippet.
|
|
|
|
Now ! is required to match against a constant, and by default a name
is bound.
|
|
|
|
|
|
|
|
|
|
Not sure if everything here will be needed eventually, but we have a
working bytecode interpreter. Next I will write the linker, then the
core compiler, and finish with the macro expander.
|