That is to say, yes, I recognize my opinion as just an opinion. Most of it is colored by bad experiences with large YAML files, I confess.
My problem with the code is precisely that it tears down my notion of the code being nothing more than a list of data. As an example, in:
(define (factorial n)
(if (<= n 1)
1
(* n (factorial (- n 1)))))
Everything that goes together is in the same list. Some things branch off of because they are part of another list. But all subexpressions are easily visible as just lists. I can take one out and try it somewhere else. How do I know they are lists? Because they look like every other list in the program. Begin and end with a paren.The "improved one":
define factorial(n)
if {n <= 1}
1
{n * factorial{n - 1}}
How do I know it is over? How do I trace back to what part of the code is finished when I evaluated {n * factorial{n - 1}}? Hopefully, the code is short enough that these are obviously answered. However, I am well aware that sometimes this doesn't work. And, quite frankly, the brain power to find the matched paren is much less than the brain power to determine what lexical unit the compiler would have been in, and to scan up for the matching lexical unit.Then there is the contrarian in me that is probably just getting annoyed that they labeled the proposal as the "improved" piece of code. :D