Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

Yes, concatenative languages. Check out Factor[1] or Forth[2], for example.

[1] http://www.factorcode.org/

[2] http://thinking-forth.sourceforge.net/



Funny you should mention forth, I never even thought of forth that way (I did some forth long ago), but I can see the parallel, with the stack being the 'intermediate' that gets passed from function to function.

Never heard of 'factor' yet, I'll have a look at it.

Thanks!


Factor is interesting, because it tries to be Lisp in concatentive form. Because of this, it has a lot of interesting and powerful abstractions that make you rely on the order of the stack a lot lot less (as they like to say idiomatic factor doesnt use the stack and Factor has more in common with Lisp than with Forth). Its well worth a try, though its got a pretty steep learning curve.


What's Factor's approach to macros?


EDIT: whether anything I say below is actually true, making new syntax is totally supported in Factor both in the language and in the community.

http://factor-language.blogspot.com/2009/09/survey-of-domain...

pretty much the same as lisp's. MACRO: defines a lisp style macro, http://docs.factorcode.org/content/word-MACRO__colon__%2Cmac... (MACRO:: defines a macro with local variables)

SYNTAX: defines a 'parsing word' http://docs.factorcode.org/content/article-parsing-words.htm... which I think is basically the same as a lisp Reader Macro

Though you don't seem to need macros very often because you tend to pass things around as lambdas, cond for instance is implemented as a normal function.


One commonly used parsing word is INFIX: which, as you would expect from the name, allows you to write equations in infix notation rather than the default postfix. Macros work exactly like someone familiar with lisp would expect them to.


I've played with using Factor in this fashion.

I went so far as defining | as a noop (I think it was SYNTAX: | ; )

That way I could do stuff like [1, 3, 4] | first | dup


Hah, thats a nice and easy way to mirror shell piping, though I personally prefer it without the extra (unneeded) punctuation.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: