3 ms·
From what I observe we haven’t found a good model for configuration languages yet, in the space between pure data on the one end and Turing-complete languages o
by layer8 2y ago
From what I observe we haven’t found a good model for configuration languages yet, in the space between pure data on the one end and Turing-complete languages on the other. In particular if the languages are also aimed at non-developers, like traditional, mostly key-value configuration files are (INI files, many Unix configuration file formats).
As is often noted, the goal of avoiding Turing-completeness is a red herring, because restricting a language to (say) primitive-recursive functions still easily allows programs that don’t halt in any remotely practical time, and effectively still allows to emulate Turing machines up to some large if finite upper bound of execution steps.
We want some expressiveness and some ability for functional abstraction in our configuration languages (variable substitutions, simple macros, and the like), but we also don’t want them to become full-blown programming languages allowing arbitrarily complex programs. However, it’s not clear that there really is a sensible and principled middle ground.
- andrewflnr 2y agoDoes total functional programming not do it for you as a middle ground? In particular look at Dhall and its theoretical properties, but there are more possibilities where that came from. There are a lot of typed lambda calculi with various normalizing properties, which I believe can be read as nice analyzability, halting but still somewhat expressive.
- layer8 2y agoTotal functional programming corresponds to what I wrote with regard to primitive-recursive functions, so no.