I tinkered a bit (as many others have too!) with a lisp syntax for C, just to see what it'd feel like. That is, exact C semantics (so not inventing anything) but sexpressions.
What I remember struggling with is that it was surprisingly kind of hard to remember when parens are necessary where. For example you might define an if statement:
(if (> x 3) (printf ...))
Looks nice, but what about if you want multiple things in the body? Your options are
(if (> x 2) (progn (printf a) (return b)))
Where "progn" means "curly braces" effectively, or instead always requiring a list-shaped argument
(if (> x 2) ((printf a) (return b)))
which means in even the single-expression case you have to remember to always double-wrap
(if (> x 2) ((printf a)))
And now throw in handling of 'else' into the above. It gets surprisingly hard to use surprisingly fast. This problem repeats everywhere (function definitions, type declarations, for loops, and so on).
What all the above really clarified for me is that sexps work great in languages like lisp/scheme that are designed around them, but they don't solve syntax for free.