A monadic variation on 'Unbound.LocallyNameless.Subst' which can be used to implement hereditary substitution.