3 ms·
The author might want to add K and Q to the list, both widely used in finance and concatenative. https://kx.com/ https://kx.com/ There's also the open source j
by murbard2 8y ago
The author might want to add K and Q to the list, both widely used in finance and concatenative. https://kx.com/ https://kx.com/
There's also the open source j, in the same fine http://www.jsoftware.com/ http://www.jsoftware.com/
Last but not lest, Michelson, Tezos' smart contract language https://tezos.gitlab.io/master/whitedoc/michelson.html https://tezos.gitlab.io/master/whitedoc/michelson.html
(shameless plug) is also a concatenative language.
- klibertp 8y agoAre you sure about that? I don't know K/Q, but I learned some J and I don't think it can be called concatenative. It's tacit/point-free style it but one of the styles you can use in J. I think if J is concatenative, then so is Haskell - and I never heard anyone claiming that.
- murbard2 8y agoI know less about J, but idiomatic K/Q is definitely concatenative. I suppose the emphasis should be on idiomatic.
- klibertp 8y agoOh, ok. 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 :)
- thesz 8y agoIn Haskell there is an operator "space" - an application operator, which applies left side to argument on right. It is a source of Haskell conciseness [1]. [1] http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.144.411&rep=rep1&type=pdf 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!