An advantage of the functional representation is that optimizations are naturally expressed via rewriting allowing the automatic exploration of optimizations for example by stochastic search as explored by Lift [1]}, [2]}.
Stratego [3]} and more recently Elevate [4]} show how to describe complex program transformations as composition of rewrites expressed in strategy languages that provide a more formal treatment of the scheduling languages found in Halide and TVM.
