<p dir="ltr">There are certain patterns of strictness or laziness that signal the need for extra caution. I'm wondering whether it might be possible to offer warnings for different varieties of them, and pragmas suppressing the warnings at the relevant sites. Some function behaviors that suggest extra care:</p>
<p dir="ltr">1. Conditionally strict in an argument. In many cases, making it unconditionally strict will improve performance.<br>
2. Strict in an argument that is or could be a function or a newtype wrapper around a function. This can be caused by adding too much strictness defensively or to plug a leak.<br>
3. Lazy in a primitive argument like an Int. This could lead to unnecessary boxing.</p>
<p dir="ltr">Any of these could occur in correct, efficient code. But I'd love to be presented a list of warnings to check over, and a way to check items off the list with pragmas.</p>