The only popular language I can think of that requires side effects to be declared is Haskell. Which doesn't have a distinction between statements and expressions.
Are there any good examples of languages that have it, where it isn't "useless"?
python, javascript, pretty much any language that is popular. I believe everything in Haskell is an expression, even the do notation, no?
But I think the argument being advanced is that the distinction between statements and expressions is fundamentally unnecessary. I don’t really know of any good argument in favour of them: I tend to think lisps have the perfect and simplest possible syntax.
Are there any good examples of languages that have it, where it isn't "useless"?