この「制約内のあいまいな型変数 `a`」はどういう意味ですか?
-
27-10-2019 - |
質問
このコードでは、ワーカー関数go
の最初のパラメーターを「型族」型にしようとしています。タイプinsert
関数がタイプクラスに属していることがわかりますが、以下の例ではそうではありません。
私は型族に慣れていないので、間違って使用している可能性がありますが、このエラーはどういう意味ですか? ジェネラコディセタグプレ
制約内のあいまいな型変数 `a ': ジェネラコディセタグプレ
考えられる修正:修正する型シグネチャを追加します これらの型変数
解決
これはコンパイルされます: ジェネラコディセタグプレ
何を変更し、その理由を教えてください。
最初に、M
に制約が必要だと想定したので、制約を適用して使用サイトで利用できるようにする型定義の形式であるGADT
を使用しました。
次に、GHCが不満を述べた問題、あいまいさ。重要なのは、コンパイラが使用すべきジェネラコディセタグコードを 推測する方法がないため、それを伝える必要があるということです。そのためには、使用する型変数をスコープに入れてから、ローカルシグネチャでコンパイラに使用する型インスタンスを指示する必要があります。
所属していません StackOverflow