Factor: A Practical Stack Languge
factorcode.org
factorcode.org
I absolutely love the idea of concatenative languages, I just haven't gotten my toes in the door, so to speak.
Maybe this year, as I'm back in a coding job.
The older I get the less willing I am to learn languages just because they are interesting.
Here's how it usually goes:
It works like this: You try Factor. You stick with its weirdness through one or two small projects. Somewhere in there your brain starts to accept the new way of doing things. Shortly after, you discover there are things you like and things you don't. You refine your opinion as you use the language more.
After a week or so, you will want to use an abstraction from Factor in a project for your day job. Maybe you implement it. You have confidence it will work because you've already seen it in Factor. But maybe you don't implement it for whatever reason. Even then, you have an advantage over your coworkers because you already have mental tools in place to help you reason about the problem.
That said, effectively no one would benefit from switching. I like Factor, and stack languages in general, but from a difficulty perspective, they are MUCH more difficult than languages from the Algol family to use.
https://andreaferretti.github.io/factor-tutorial/
I found it somewhat enlightening.
If you’ve ever coded Haskell in “point-free” style you might also get the gist of how “words compose”.
The part where it says it even exceeds that of Lisps, is it because it has access to change all prior tokens and later tokens? Basically factor parser words are like full program reader macros?
Here's a talk I watched recently describing some of the neat mathematical properties of concatenative languages: https://www.youtube.com/watch?v=_IgqJr8jG8M
I really like having something to explore 70-80s machines (other than Basic), hardware and systems that have no/bad Repls (like Xamarin). This kind of thing is ideal for that as it takes a really short time to implement, gives full and flexible access and it is fast enough to prototype things with.
[0] https://gist.github.com/tluyben/16ee2645c4c8aed813005d51488d...
A newer concatenative language with a better website: https://8th-dev.com/