S-expressions really are the game changer. Especially in a functional lisp with immutable data structures. You can lift and shift forms around with reckless abandon and never cause a bug. You're not typing characters that eventually get parsed into a tree, you're building the tree! Programming in bespoke arrangements of ascii delimiters feels like regressing to punch cards.
> S-expressions really are the game changer.
I know, right? The hardest part is that no amount of explaining and convincing anyone who never tried truly grokking this aspect of the homoiconic nature of Lisps really moves the needle. It's like living in ancient Greece, trying to convince people that riding a bike is enormously fun. No matter how verbally you explain, no matter how many blueprints and drawings you produce — until you build one and teach someone to ride it, nothing would change — people will not believe you.
Same is true with Lisp; until you get to experience the structural editing and REPL-driven workflow yourself, you wouldn't even know what you're missing.