この「制約内のあいまいな型変数 `a`」はどういう意味ですか?

StackOverflow https://stackoverflow.com/questions/8827934

  •  27-10-2019
  •  | 
  •  

質問

このコードでは、ワーカー関数goの最初のパラメーターを「型族」型にしようとしています。タイプタイプファミリーのドキュメントでは、同様のinsert関数がタイプクラスに属していることがわかりますが、以下の例ではそうではありません。

私は型族に慣れていないので、間違って使用している可能性がありますが、このエラーはどういう意味ですか? ジェネラコディセタグプレ

制約内のあいまいな型変数 `a ': ジェネラコディセタグプレ

考えられる修正:修正する型シグネチャを追加します これらの型変数

役に立ちましたか?

解決

これはコンパイルされます: ジェネラコディセタグプレ

何を変更し、その理由を教えてください。

最初に、Mに制約が必要だと想定したので、制約を適用して使用サイトで利用できるようにする型定義の形式であるGADTを使用しました。

次に、GHCが不満を述べた問題、あいまいさ。重要なのは、コンパイラが使用すべきジェネラコディセタグコードを 推測する方法がないため、それを伝える必要があるということです。そのためには、使用する型変数をスコープに入れてから、ローカルシグネチャでコンパイラに使用する型インスタンスを指示する必要があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top