Comment by thayne

3 years ago

I like a lot of the ideas in dhall, but but I disagree with some of the design decisions.

The syntax for objects with dynamic keys seems unnecessarily verbose.

The arithmetic capabilities are very restricive. No subtraction, division, or modulo. Addition and multiplication only work on Natural. No numeric comparison. = And != Only work on booleans. There isn't really much motivation given for why it is so restricted.

Maybe I'm missing something, but it seems like if a type has a lot of optional fields, which is pretty common, you have to explicitly pass None for all of them. Maybe the pattern is to merge a default record with a smaller record that has what you actually want? But I didn't see any examples of that. Also, how do you deal with cases where null, and the absence of a value are treated differently? For example if leaving the value off means use the default and null means to turn a feature off. From what I can tell optinals are either always null or always absent when None.

It also seems like it would be annoying to have to specify types whenever calling functions like List/length.

IDK, maybe in practice these aren't as bad as they seem.