YAML is interesting, because at first glance it looks like a pretty convenient, human-readable syntax, it's got lists, dicts/mappings, strings, numbers, booleans... simple enough for 90% of the use-cases, and focusing on "human-readable, right? But look at little deeper and one uncovers some horrors.
In particular, the plethora of boolean values... here let me just grab the regex from the spec [1]:
y|Y|yes|Yes|YES|n|N|no|No|NO
|true|True|TRUE|false|False|FALSE
|on|On|ON|off|Off|OFF
At that point why limit yourself to just the English language?
Then there's the language-specific types or, as YAML calls them, "local tags". The stuff preceded by `!` like
!!map {
? !<tag:yaml.org,2002:str> "foo"
: !<!bar> "baz"
}
At that point, you've exceeded the scope of "human-readable".
I'll admit there are some other, er, "complications" that I actually like. In particular, anchors (`&FOO`) and aliases/references (`*FOO`) [2] make it possible to describe arbitrary graphs, and I find it very useful to factorizing blocks. Also, "folding" [3] text, which allows you to spread value/text across multiple lines for readability, while respecting the surrounding indentation, is neat.
[1] https://yaml.org/type/bool.html
[2] https://yaml.org/spec/1.0/#syntax-anchor
[3] https://yaml.org/spec/1.0/#id2566944