Joy in Factor
github.com
github.com
I'm glad I did so, the Java experience gave me enough money to take time off my career and the Lisp experience gave me something interesting to do with the time off.
However, Factor still has one problem: it takes a bit of a time investment to get used to the Factor idioms and until you do, its horribly difficult to code in. Once you do though, its an amazingly powerful language. Pity I need to spend a little longer at it.. time which I don't currently have to spare. Hopefully in a few months though :-P
http://github.com/raganwald/homoiconic/blob/master/2008-11-1...
I'd say there's some passion and curiosity about concatenative languages. (Summary for those too busy to read it: concatenative languages are direct implementations of combinatorial logic).
Same here, keeping a close eye on it. Its a VERY powerful language - like a concatenative postfix modern Lisp.
How do things like Factor improve on Forth?
That is, well written idiomatic Factor makes use of higher level abstractions which hide the stack from you. The stack should not be used as a data structure, but rather as a scratchpad to allow pointfree programming. Factor provides a load of abstractions which can often handle all of that low level stack handling stuff for you, making the code easier to read, follow and understand (once you know the abstractions). Factor also provides local variables, for use when it makes sense to name your data. Its not shunned to use them over the stack - when it makes sense to. Finally, Factors macros allow you to modify how the code is parsed (Factor calls them "parsing words"), so you can actually change the syntax. Core Factor provides an "infix" parsing word which allows you to write infix expressions and it is advised to do so when it makes sense (eg, for mathematical formulas). Another example of parsing words put to great use is Jeremy Hughes' inline C/C++ library, which basically allows you to write C/C++ code inline in Factor source files. During compilation, Factor will compile this code with GCC and simplifies writing of FFI stubs for wrapping C/C++ libraries.
Basically, Factor is very different from Forth. Slava likes to say that "Factor has more in common with Lisp than it does with Forth" and its often said that Factor only has a syntactical resemblance to Forth, but is otherwise very different.
I was able to get happily hacking in one saturday.
Just copied extra/tetris and went turning it into tetcolor. At the end of day, I was able to do non-trivial things and my code worked as I expected.
Interactive development ftw: you can try your word before you write it down into source.