let x = 5;
SML is explicit about it and its syntax makes it clear what type of binding is going on.
val x = 5
fun f = fn x => x * x
datatype weekend = Sat | Sun
So while on top level not everything is an expression, everything on the RHS is an expression.