MyLisp: Callstack and threading

I’ve added multi threading support to MyLisp today. The earlier implementation of the callstack was not up to the task, so I had to rewrite it completely. The new callstack is based on stack frames which can hold local symbols. So behold! :-) , the first multi threaded application in MyLisp (func FooBar ()  …More

Lazy evaluation

My Lisp now supports Lazy evaluation. I’ve made it possible to define per function if it should use lazy or eager evaluation. (The next step will be to decide that through code analysis.) For those who don’t know what lazy evaluation is about, the purpose of lazy evaluation is to avoiding unnecessary calculations. Take the…More

Lisp operators

I just got home from a conference with my new job, a little bit tipsy and couldn’t sleep. So I decided to add some new features to my Lisp clone. I’ve made it possible to set operator priority for functions. Eg. (operator-priority + 1) (operator-priority – 1) (operator-priority * 2) (operator-priority / 2) This will make the engine…More

Lisp Debugger

I’m still working on my Lisp language clone. Today I started to add debugging support to it. I made the AST aware of the original source code, so each node can reference back to the place it was parsed from, and I also added a bit of call stack features. I’m pretty satisfied with it…More