3 ms·
To me one of the primary benefits of dhall is the type system checking that the structure of your data and its values match expectations. By using JavaScript do
by wezm 6y ago
To me one of the primary benefits of dhall is the type system checking that the structure of your data and its values match expectations. By using JavaScript don’t you lose all that?
- przemo_li 6y agoTypescript can be used for type checking. Disclaimer: I'm not familiar with jhall to know if it does or requires something inexpressible in Typescript.
- markrawls 6y agoNot in the slightest! jhall isn't a custom language, it loads in pure JS and spits out JSON or YAML. If the node interpreter can run it then it's fair game as far as jhall is concerned. Since Typescript compiles down to CJS you can use its output just fine - although admittedly it would be nicer to be able to run typescript files directly.
- abathologist 6y agoAnother principle virtue of Dhall (stemming from the type system) is that it's total, so you know no funny business can go on when computing the configs. Even if you use typescript for (unsound) static type checking, you're definitely not going to get totality out of it. If someone wanted dhall in JS, they could implement it, as has been done for Go, Ruby, Clojure, etc.[1] iiuc, this library is much more akin to the approach described in https://beepb00p.xyz/configs-suck.html https://beepb00p.xyz/configs-suck.html [1]: https://docs.dhall-lang.org/howtos/How-to-integrate-Dhall.html#language-support https://docs.dhall-lang.org/howtos/How-to-integrate-Dhall.ht...
- markrawls 6y agoThanks for the article! jhall is definitely closer to what is described there than it is to a language like dhall - it provides a convenience wrapper around basic language features to programmatically generate configuration.
- markrawls 6y agoThat is a tradeoff that you make using CJS, yes. You could write your config in typescript and then compile that down to CJS before usage, but admittedly that does add another step in the build process. I am looking into enabling TypeScript/ES6 syntax in a future version of jhall to enable typing without extra build steps.