Original author here. Didn’t expect my little hobby project to land on the front page of Hacker News. In the midst of a complete rewrite of the language which I unfortunately only get to nibble at here and there; will hopefully publish it soon.
FWIW, I've been playing around with Joy (Manfred von Thun's concatinative language) and there's definitely "something there" IMO.<p>For one thing, I've come around to the view that syntax is waaaay over-emphasized in our current languages. The way I like to put it is <i>syntax is a MacGuffin</i>, "an object, device, or event that is necessary to the plot and the motivation of the characters, but insignificant, unimportant, or irrelevant in itself." You have to have some syntax to write programs, but not nearly as much as we typically use.
I haven't dug into Om yet, but Joy feels like the simplest useful language.
(BrainF*ck is simpler but harder to use, Lisp and Forth are more complex.)<p>For another, the concatinative systems seem to be simpler to reason about than Lambda Calculus-based systems (most current PLs.) What I mean is, these languages fulfill Backus' vision of FP systems wherein you can derive programs by doing algebraic manipulation of programs. (You can do this in any language, of course, but Joy et. al. seem to make it especially easy.) I suspect this has something to do with Category Theory (see <a href="http://conal.net/papers/compiling-to-categories/" rel="nofollow">http://conal.net/papers/compiling-to-categories/</a> )<p>All this to say, if you haven't already, do have a look at Concatinative languages.
I found some context about this project in a comment by its creator: <a href="https://news.ycombinator.com/item?id=5098216" rel="nofollow">https://news.ycombinator.com/item?id=5098216</a>
Could someone explain this bit from the intro to me?<p>> Recursion is very efficient in the Om language, due to (a) the "eager" evaluation model enabled by prefix concatenative syntax...<p>How is the syntax of any relevance for the evaluation model?<p>Once the AST is parsed, the syntax is gone and we're just left with pairs of 'operator' and 'operand'.
There isn't much activity on Github. The last release was nine years ago and all the code contributions are from a single person.<p><a href="https://github.com/sparist/Om" rel="nofollow">https://github.com/sparist/Om</a>
Has anyone seen use of a concatenative language, to build vocabulary for broader programming language implementation? So vocabulary for linkage and PICs and stacks and gc and threads and so much else. Not merely "I have this language, so I'll implement and tool it in itself", but moonshot "here's a vocabulary to start implementing other languages... all other languages". Aspiring to implement a C, a V8, an OCaml, and more. Perhaps with bootstrap aids on the side, like a Z3 prover. Sort of like a lisp machine approach, with an integrated commonality from low-level bit twiddling to OS to AI. But with a Racket or Poplog flavor of scaffolding language-like platforms on which to stand. Something like a forth bootstrap, but which doesn't stall out having reached forth, but keeps going, describing a richer and richer space of computation. Has anyone seen anything remotely like that?
If hating on Lisp’s parentheses in your spare time is not providing enough joy for you, I present to you Om {with which you can complain about too many curlies}.
Looks like an intriguing idea but it lacks examples except the "Hello world" at the bottom of the page. But it's not enough! More examples please.
Surprised it doesn't show up on PLDB:<p><a href="https://pldb.com/index.html" rel="nofollow">https://pldb.com/index.html</a>