I think I’ve explained the use case. I don’t know what you mean by “standard tools”. There is no side effect analysis tool in Julia and Julia compiler cannot provide side effect information by design.
Please take a look at my example, I cannot make my users to use f! as their name by force, this is just not possible, as a developer I need to provide a way to make user aware of the side effect explicitly by API design rather than asking my users to change their variable name like following
foo! = MyCallable()
this is not what we meant to do here. If you mean a more concrete use case, every circuit object in Yao.YaoBlocks will have side effect (as I already mentioned above).
I’m not talking about in-place functions, I’m talking about in-place callables (or say in-place pipe), again if you take a look at the example, this is not possible to make this explicit by name, because it is not defined by developers. overloading a pipe operator like !> will be the only option to make this API explicit on side effect.