Joy[3] was the first language to be described as “concatenative”, invented by the late Manfred von Thun; its operation is defined as a term rewriting system, but it can be implemented using a stack. If you want some theoretical background, Brent Kirby’s Theory of Concatenative Combinators[4] may be enlightening. Cat[5] was the first statically typed concatenative language, and Kitten is my successor to Cat.
If you’re looking at Rust, Kitten[6][7] is designed with similar goals in mind. It’s a language about safe, expressive abstractions with predictable, low runtime costs. It encourages expressing programs as compositions of effects. It is not usable for production but may be fun to play around with; we are currently working on a native backend.
[3]: http://www.kevinalbrecht.com/code/joy-mirror/joy.html
If so: does it have a package manager yet?
The last I was plunking around with Factor, 6-8 months ago, uh, "dire" was a good word to describe the package/library management situation. Is that still accurate?
Have you guys considered bootstrapping by using a package manager from another language/ecosystem? For instance, npm is pretty awesome, and they don't really care whether what's being distributed is javascript or not.
Package managers are ... important.
It's my understanding that most language research is on safety features, type systems and so on, so I don't know how interesting Forth would be.
can you implement that in y86? i didnt learnt x86 asm
I was impressed by reading the excellent 're: factor' blog; he often re-implements small unix utilities in Factor, for instance.