LISP in Ruby …
Sunday, September 14th, 2008Now this is neat !
And a new LISP like dialect that targets the Java Virtual Machine called Clojure
Now this is neat !
And a new LISP like dialect that targets the Java Virtual Machine called Clojure

My presentation on LISP has been given to the Melbourne Patterns Group, and if there is a big enough interest I will post the slides, however the slides don’t really stand alone as I don’t put what I am saying on slides, I just use them to illustrate my points. Something I learned from Presentation Zen, which I blogged about earlier.
A special thank you to Bill Birch who answered questions on LISP and showed his Genyris dialect of LISP, and to Henry Guillaume for providing me some Emacs LISP code he wrote back in the day, which incidentally is still in Emacs today.
One attendee said: “?first really interesting user group meeting I’ve been to this year”
Today I am giving the same presentation as a brown bag to the developers at work, in the hope that they look further into LISP.
I will be presenting at the next Melbourne Patterns Group on LISP. It will be a quick and simple introduction to the language and why I think you should use it.
There will be two special guests to support my presentation !!
The date and time is September 3rd at 6:30pm and the address can be found at the web site linked above.
I hope to see you there.
A reader sent me this link to an example of Lisp (emacs) doing behavior driven development.
(context "A list with three items" (tag list example) (lexical-let ((list (list "a" "b" "c"))) (specify "should contain the first item" (expect (first list) equal "a"))
No special byte code generating libraries, no special new version of Lisp, just plain right out of the box, Lisp !
Is there nothing Lisp can’t do ?
Thanks Eddy.
Steve has another great piece on Lisp here.
If you have even the slightest interest in Lisp then this post is for you, since it jumps right in with a style that is Steve Yegge.
Bill Birch (local in Melbourne Australia) has released Genyris, a new language, derived from LISP.
Lisp is great, Bill is local and also great, so check it out here !
Attached is some code I was doing yesterday (I spent an hour on it). The thing that I hope you will find interesting and of use is the approach I am taking and hence why I’m blogging about it.
I have a vision of the future and Lisp is a fundamental part of that vision so I am creating ‘hyperlisp’ which is a version of Lisp that runs on every platform, in the browser all the way to through to the back end database. So there is only one syntax for anything you want to do and only one protocol.
The implementation is to run on as many platforms as possible and be written in assembler. This presents a challenge. How do you write for every platform at once and how do you make sure you can get the assembler syntax right, especially when you have never coded for a particular chip before?
The answer is to write to an abstract machine and when the algorithm works, translate the instructions into a specific assembler. This allows you to concentrate on what you have to do in a basic and abstract way and get specific at the last moment.
So when faced with the challenge of the unknown, think about what you do know and if it would be possible to make some progress on that basis and then at a later stage, translate that into something else. I guess this goes along the lines of doing the simplest thing that could possibly work.
In my case this approach works very well since writing in assembler is something I can do but it would take me a lot longer to get from A - B because my knowledge and tooling is not as advanced in assembler as it is in Java. So using Java is a lot faster. Quite ironically Lisp is awesome for this sort of thing since it’s macro system allows you to write a Domain Specific Language very fast and it is often used for this sort of situation. So why not use Lisp, because I know Java better right now.
This approach isn’t something I have invented but something called “bootstrapping” and it has been used by compiler writers and those porting from one operating system to another for years.
The attached code is ‘early days’ and only a handful of instructions are implemented, but it should give you the idea of how things work.
Finally, a guide to Lisp, the language and the history that I can point to as “mandatory” reading for those interested in Lisp.
This should wet your taste buds …
The most important thing is that Lisp is a highly efficient programming language. Common Lisp vendors have worked very hard over the years to provide excellent performance.
(Please note that modern IDEs for Java, like JBuilder, NetBeans, Eclipse and the like are steadily progressing towards the same level of interactivity as that of Lisp and Smalltalk - so obviously this is considered valuable even by the communities of Algol- and C-like languages.)
It seems like only today I sent a rant to James Robertson of Cincom asking why Smalltalk isn’t in wider use, especially here in Australia when I came across this site that took me down memory lane. Ah, those were the days.
Software Preservation Group -Â C++ - LISP
But no Smalltalk yet. Ah, time to dig out the Smalltalk/V 286 disks !