型推論中に強制 (別名暗黙の変換) を推論する方法を知りたいです。私は、Bastiaan Heeren によるTop Quality Type Error Messagesで説明されている型推論スキームを使用していますが、一般的な考え方はおそらくすべての Hindley-Milner 風のアプローチで同じであると思います。
強制はオーバーロードの一種として扱うことができるように思えますが、このホワイト ペーパーで説明するオーバーロードのアプローチでは、コンテキストが戻り値の型に課す要件に基づくオーバーロードを (少なくとも私が理解できる方法では) 考慮していません。強要には必須。また、このようなアプローチでは、同一性強制を優先することや、強制可能性の推移的閉鎖を尊重することが難しくなる可能性があることも懸念しています。各強制可能な式、たとえばeをcoerce ( e ) にシュガーリングしていますが、それを coerce(coerce(coerce(... coerce( e )) にシュガーリングしています。) ...))) 強制の最大ネスティングに等しい深さについては、ばかげているように見えます。また、強制可能性の関係を、深さがコンテキストから独立している有限の推移的なクロージャーを持つ何かに制限します。