Does it have anything comparable to Lisp macros ?
When one says "imperative", one hardly means "an smalltalk influenced, pure object oriented language", but more like a statically-typed Algol variant, usually a derivative of C, Fortran, Pascal or Ada.
I don't think the Io counter-example is valid, just as an Icon counter-example would be valid (yes, Icon is "imperative", but it's also an Snobol derivative with goal-oriented execution, generators and perl-like text processing prowess :-)
list(1, 2, 3, 4) select(isEven) map(+(1)) ==> list(3, 5)
isEven and +(1) are messages that select and map evaluate.
Also see: