Map over expressions?


#1

It might be slightly useful to define

map(f, e::Expr) = Expr(e.head, map(f, e.args)... )

It would be useful for recursive AST functions. Of course, users defining map_expression themselves would probably be fine too, but it’s something I find myself doing repeatedly.


#2

Just out of curiosity, would map!(f, e.args) not be useful?


#3

Definitely in some situations. I tend to avoid mutating in place if at all possible when I program.


#4

While I agree that it would be useful, I would not make it a method of Base.map. I don’t think that map should be defined for composite types, let alone in ways that transform only some of the fields.

That said, I think this would be a useful addition to some macro toolkit packages, maybe one of them will include it. Perhaps submit it as a PR to one of them?