Mathematica's unified symbolic architecture immediately allows it to perform structural transformations not only on objects like lists, but also on general symbolic expressions that can represent concrete or abstract data of any kind.
Flatten — flatten out nested functions (associativity)
Thread — thread a function over lists or other constructs
Sort — sort elements of an expression (commutativity)
FlattenAt — flatten particular elements
Distribute — apply distributivity to nested functions
Join — join expressions together