OutsideIn(X)
https://wiki.haskell.org/Simonpj/Talk:OutsideIn
Outsidein(x) modular type inference with local assumptions
https://dl.acm.org/doi/10.1017/S0956796811000098