I think one issue that pops up in many languages is the distinction between functions that have side effects and those that don&#x27;t. In C++ you see standard library higher-order-functions that accept lambdas or other functions, but the documentation says &quot;the function passed should not produce side-effects.&quot; You also see this in Clojure functions, and functions you might write might also expect only side-effect-free functions. The problem is that the functions you pass may not be functions you wrote, they might come from another library and then to be most confident, you must go and look up the source or docs to feel sure. I don&#x27;t think a naming convention is enough, since many may not use the convention. For languages where this is important, I wish there was a compiler or runtime check for these things so the user didn&#x27;t have to take responsibility. Almost as if functions were split into two &quot;function types&quot;, those with and those without side effects. Maybe starting at the lowest level of the core language library, some functions would be noted as causing side-effects, and then any function built that called those functions would automatically be categorized as such, and on up to the top, so that side-effects-beget-side-effects and function parameters that require non-side-effect-functions wouldn&#x27;t allow those to pass.<p>Anyway, it is a problem that is not solved by a naming convention.