Lean4
/-- Map over the strings in a `Format`. -/
def _root_.Std.Format.mapStringsM {m} [Monad m] (f : Format) (f' : String → m String) : m Format :=
match f with
| .group f b => (.group · b) <$> Std.Format.mapStringsM f f'
| .tag t g => .tag t <$> Std.Format.mapStringsM g f'
| .append f g => .append <$> Std.Format.mapStringsM f f' <*> Std.Format.mapStringsM g f'
| .nest n f => .nest n <$> Std.Format.mapStringsM f f'
| .text s => .text <$> f' s
| .align _ | .line | .nil => pure f