隣接行列に基づいたグラフの独自の実装を作成し、Read
クラスのインスタンスを作成しました。
私のグラフは、エッジのタイプとなるタイプを入力として受け取ります。
こんな表現をしてみたら
read " - - 8 \n - 9 - \n 1 2 3" :: GraphADJ Int
これは問題なく機能します(3つのノードと、最初のノードから3番目のノード、2番目のノードから2番目のノード、3番目のノードからすべてのノードのエッジを持つグラフです)。
私がやりたかったのは、型推論にエッジのタイプを伝えるのではなく、それらをコンテキストに入れることです(のようにread"4"+3
)。
insertEdge
グラフ、いくつかのノード、新しいエッジを取得する関数があります。
insertEdge :: Graph g n e => g -> (n, n) -> e -> g
(のインスタンスとGraph
なるグラフの一般的なクラスです)GraphADJ
だから私がやろうとすると
insertEdge (read " - - 8 \n - 9 - \n 1 2 3" :: GraphADJ Int) (1,2) 3
正常に動作しますが、型を明示的にしないと、エラーが発生します
Ambiguous type variables
。
何かを忘れたのですか、Read
それとも何かが足りないのですか?