Some languages achieve error checking by type transforms and pattern matching, which are much more effective and efficient than error checks after every function call
Sure, but is writing the error check by hand what creates the benefit? Or is it having the error check?
It is thinking about what to do for each operation that can fail. This thought is what separates the applications that recover when the network glitch is over vs. the applications that need to be restarted.