I thought of a really good trick that should simplify the alucard compiler quite a bit.
Currently I do some hacks to get around the fact I can't use CL's let. I have my own version def.
however what if, when I create a term of the language, instead of just creating it.
What if I gave each an unique object number, and thus when it gets duplicated
(let ((foo (+ 2 3)))
(+ foo foo))
We can know the user really let it.
Thus I can have a pass that redoes the let with some basic analysis.
We can remove def from the language with this change in!
Note that we still have to emit to a real body as if a user writes
the (+ 2 3) would get thrown away, if the (+ 2 3) does not emit, This means that we will likely lose information that our current strategy works with.
I thought of a really good trick that should simplify the alucard compiler quite a bit.
Currently I do some hacks to get around the fact I can't use CL's let. I have my own version
def.however what if, when I create a term of the language, instead of just creating it.
What if I gave each an unique object number, and thus when it gets duplicated
We can know the user really let it.
Thus I can have a pass that redoes the let with some basic analysis.
We can remove
deffrom the language with this change in!Note that we still have to emit to a real body as if a user writes
the
(+ 2 3)would get thrown away, if the(+ 2 3)does not emit, This means that we will likely lose information that our current strategy works with.