ok. i don't agree. those are declarations.
statements in haskell (the do notation ones) are a super useful sublanguage, and i think most languages should learn from haskell. they are distinct from expressions at the type level (because they're part of some effect system, e.g. monads) but are still composable. the best imperative languages imo do distinguish statements and expressions, but they don't do it for effect separation, sadly, and don't make it programmable.