Concatenative language (2017)
concatenative.org
concatenative.org
https://www.youtube.com/watch?v=f_0QlhYlS8g
Anyway, really want to give Factor a try for some personal projects. Would love to hear anecdotes from people who futz with this stuff.
And here's a quick screencast I put together that shows using the Factor GUI to drill down objects and source using the Gopher client as an example: https://www.youtube.com/watch?v=sozwQ7QmOhs
Edit: Wasn't so much just PostScript environment but the NeWS/HyperNeWS environment that made that graphical programming rather good fun...
Definitely some interesting parallels.
http://wiki.c2.com/?ForthVsLisp is quite an interesting read.
I worked in an academic partner - the team I worked in was mostly control engineers and mathematicians and I was the lone CS guy who got to actually build stuff.
It all worked out well anyway, I ended up joining Google a couple of years after that talk, and now I'm at Apple working on Swift. It's not as elegant as Factor but of course has a much bigger user base.
Too bad that google codejam limited the available languages starting from 2018..
Factor is a very impressive engineering accomplishment, the standard library has so many useful algorithms and data structures implemented, and almost all of it with very clean APIs and documentation.
There's also the open source j, in the same fine http://www.jsoftware.com/
Last but not lest, Michelson, Tezos' smart contract language https://tezos.gitlab.io/master/whitedoc/michelson.html (shameless plug) is also a concatenative language.
[1] http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.144... (Is Ours Smaller Than Theirs?)
You can have special operators when space is not enough, it is exemplified in applicative style - (<<star>>) has type Applicative f => f (a -> b) -> f a -> f b, e.g. it applies elements from right side argument to a left side argument with functions as elements.
(<<star>> is a "< * >" without spaces - HN screws that)
In concatenative languages you also have an implicit operator, much like Haskell's "space" or <<star>> above. In fact, you can invent one and use it instead of space of Forth. And that way Haskell will be concatenative too!
I think the point-free J (ie. without any explicitly named variables) can be called concatenative in spirit, too. If you stick to expressions composed of monadic verbs and nouns and squint hard enough, you could say it's concatenative (but with prefix notation).
On the other hand, it has these totally crazy rules of composition - called hooks and forks, different for monadic and dyadic verbs - plus adverbs which modify verbs and gerunds, and other things which together make you feel that parsing PERL is sane and straightforward in comparison to reading J. Lots of fun, though, it really feels like you're learning a language some ancient alien civilization left inside pyramids on Mars :)