I'm wondering about a situation where forgetting a strictness annotation is the analogous Haskell situation of forgetting to bounds-check some input. There are lots of ways in Haskell for something not to be evaluated. (No, the simple fixes like 'use strict fields' do not cover all cases.) To put all of them behind a free monad seems like it would be giving up a lot.
In C you could have made some 'safe buffer' struct together with some safe set of functions. But people didn't do that.
In C you could have made some 'safe buffer' struct together with some safe set of functions. But people didn't do that.