The logging example reminds me of Aspect Oriented Programming, where you inject less-important things like logging into the programming using decorators. There's a few libraries that do that for c# not sure about the f# ecosystem though.
function square3( x : int ) : div int
My code should be allowed say function square3( x : int ) : int
Basically, the problem is that in most typed languages, if you add a logger dependency to a function, then you have to rewrite the signatures of all the functions that depend on that function. That sucks.