This blog post was originally posted on my blogpost blog at this URL, and was later migrated to this place. There may be some comments at the original URL.
A couple of weeks ago, I came across this talk by Slava Pestov (creator of Factor), and I was completely blown away with what I saw. The language is more minimal than Lisp, more compositional than Haskell, and yet more extensible than almost any other language on the planet. It has the property of homoiconicity, but without the paretheses soup that is usually associated with the homoiconic languages (thanks to Lisps). The metaprogramming capabilities are top notch. The feature set is quite wide, but most of it is implemented as libraries in the language itself. Despite being such a high level language, Factor exposes all internals to the programmer. You can even manage memory manually, or do pointer arithmetic, if those things fancy you :-). As Slava said, Factor is truly the best implementation of Lisp and Smalltalk the world has.
After two busy weeks, I finally got some time to play around with Factor. Factor ships with a Listener (A Listener is to an REPL what a Homo Sapien is to a Neanderthal), which is a great tool to explore and learn the language and its libraries, and to exercise your concatenative grey cells. I was reminded of the “10 one-liners” meme that was going around a few months ago, and I thought I should give it a whirl in Factor. I managed to solve the first nine problems, but the tenth was beyond my current Factor fu. (I’d be glad if someone contributes a solution. :-)
There could be better ways to write some of these examples. Also it’s possible that some examples may contain errors. All corrections, improvements, criticism is welcome.
More resources on Factor and concatenative programming: