I’m jealous! I want the Python bindings already! But not enough to spend some of my spare time working on them, so I guess I don’t want them quite so much.
I use dhall with go, but I just took the approach of using reflection to generate type definitions, then dhall-to-json. It doesn’t do everything, but it goes quite a long way.
pretty cool, so many great ideas.
I just wished it was a tiny bit less verbose (I like conf file/languages that are based on indentation for instance)
also unsure about making external requests, it’s quite amazing on one hand but opens the door to many issues too.
Indentation based languages are the worst. If some nested config is broken by bad indentation you’re SOL. But if you have braces you can easily jump to matching brace in most editors to try and find a problem. You can auto format, which will highlight potential errors by showing you weird things like close braces in the wrong place.
For example, in Python when you have a block supposed to be nested within another, but it’s deindented too far, it’s super hard to notice. Every time I add a condition to the end of a loop I triple check the indentation, which isn’t my idea of convenient. In a language with braces, you can clearly see the block is before the close brace. Or if it’s not, the auto formatter will deindent everything after it, making it super obvious you screwed up.
If editors had built in scope visualization, folding, and jumping, whitespace would be fine. But as far as I know they don’t. And I don’t even know how you’d visualize that Python example in a way that would make it as foolproof as adding the new block before the close brace.
That said, mandatory commas suck. I’ve never had newline-as-comma cause any trouble.
There are quite a few safeguards in the language around the external request capability, but we’re always interested to hear issues people think of or run into :)
main issue for me is being dependent on the network + the server being up, maybe there is a local cache somewhere (I see there seem to be a local fallback option). it could cause cascading issues if one server is down and then others depend on it. but more practically I have to develop without internet sometimes (planes, trains, etc.).
anyway, on the bright side it does allow for all kinds of cool stuff, but then why not have a proper database / api and handle that config dynamically instead of having to “refresh” the config.
also having external requests expose to various security risks (similar to XML external entities, but not as bad)
dhall has an auto formatter (though sadly it doesn’t preserve comments), so indentation matters less to me.