Finally. Good job, Lazy-me, keep it up! Or shall I say, ‘keep it down’, dohoho!
So we’ve seen latmab – the calculator and Scheme – RNoRS Scheme interpreter, both leading to the following, somewhat fun story…
After having basics of Scheme implemented even though I did not have any previous Lisp experience, I figured I could do even better.
Hell, let’s actually learn some Lisp, said my inner smoking-hot stallion-programmer-guy!
My journey started with this mans blog and his presentation about Lisp.
I visited all kinds of lispy lands, from Scheme, which proved to be elegant and mind-blowing, going through Clojure, having all those Java goodies out of the box, all the way to another planet, simply called The Land of Lisp.
I’ve stopped there for quite some time and I loved every single minute spent there. That book is, well, unique. I’m sure there are plenty good programming books out there, but none is equally fun to read as Land of Lisp, but that’s a story for another post.
What’s really important is that I still couldn’t get ‘the Lisp’. ‘The Lisp’ is often and by many called the most powerful and expressive language ever created, even #lisp claims it to be the
#1=(programmable . #1#) language out there.
Now that’s A LOT. Especially for a language over half a century old.
Is that so, I asked myself, what’s so special about Lisp? It’s a bunch of parentheses and symbols after all, but with time passing and more lispy lines coming from underneath my fingers I’ve begun to finally get it.
The Lisp experience was, let’s face it, awkwardly enjoyable and rewarding. All this new stuff, all the techniques I wouldn’t normally consider or even know of, ALL THIS adorned with just a few lines of code, tight and delicious. After a few weeks with The Land of Lisp I came back to D, richer but not quite there yet… And it struck me.
Suddenly I found myself using thunks, arrays of nullary delegates if you please, higher order programming and metaprogramming like a BADASS. It all made way more sence now, the OOP that was dimming my coders sence, was cured (implying it’s a disease). I could see the problem from a totally different angle, instead of creating class Derp; here and class Herp; all over the place, as I usually did in C++ or Java, I could solve the problem equally elegantly, with no overhead for stuff like virtual calls and at least TWICE as fun. Those few weeks spent with LoL were more than a challenge for the mind, it truly did make me a better programmer in general.
Needless to say, I still continue my journey across the lispy lands, and find it both challenging and rewarding as a mother-
Each day I find something new to admire and enjoy, I even gave Emacs another shot, and this time, thanks to a better understanding of Lisp I’m liking it and I’m fairly sure I’ll stick with Emacs for good.
But where’s the code!? This is a blog about coding, and this post belongs to a coding series, so…
In fact I like Lisp so much I’ve started another project dedicated to Lisp, a continuation to the Scheme interpreter.
It’s called Another Syntactic Monstrosity and it’s a new lispy language for my own amusement. Check it out here.
I’m writing from scratch, without any implementation to base on, and my main goal is to make Lisp even more expressive and comfortable without getting in its way.
Here’s a quick example of ASMy code:
Hopefully, I’ll find some more time and willingness to finally finish ASM section of this site.
I will also publish a bunch of code-rich posts, about the interpreter and the language, some time in the future.