19 ms·
It would be interesting to have a DSL for data munging, but I am afraid TXR is not it. My requirements would be that the language should be functional and total
by js8 7y ago
It would be interesting to have a DSL for data munging, but I am afraid TXR is not it. My requirements would be that the language should be functional and total.
Most transformations that we do on data do not require Turing completeness or recursion. I think it would be useful to write these down in a language with semantics that is easy to analyze.
- anewhnaccount2 7y agoSo XSLT then?
- vidarh 7y agoXSLT is Turing complete with the usual caveats about memory. Given its complexity it'd be very unlikely for it not to be, but there's clear proof too: someone has implemented a universal Turing machine in it.
- kazinator 7y agoThe funny thing is, I originally didn't intend the TXR pattern language to be recursive. It needed functional decomposition (pattern functions) to break up a big pattern match into simpler units. When those were implemented, I realized after the fact, hey we have a push-down automaton that can now grok recursive grammars. I don't see why we would want to rule out a pattern function invoking itself (directly, or through intermediaries); if that hurts, then just don't do that. (Though I understand that there are languages deliberately designed without unbounded loops or recursion, for justifiable reasons.)
- js8 7y agoI found in practice that arbitrary recursion depth is (even on languages with formal recursive grammar) very rarely needed. And where it's needed it can probably be implemented as a primitive in the language (map total function over all the nodes) that can do a similar thing.
- srean 7y agoThen I think you will like https://tkatchev.bitbucket.io/tab/index.html https://tkatchev.bitbucket.io/tab/index.html "It's statically-typed and type-infered. It also infers memory consumption and guarantees O(n) memory use. It is designed for concise one-liner computations right in the shell prompt. It features both a mathematics library and a set of data slicing and aggregation primitives. It is faster than all other interpreted languages with a similar scope. (Perl, Python, awk, ...) It is not Turing-complete. (But can compute virtually anything nonetheless.) It is self-contained: distributed as a single statically linked binary and nothing else. It has no platform dependencies." I am a little suspicous that you may be the author ;)
- js8 7y agoLooks very interesting, but I am not the author.