0

次のようなモジュールがあります。

module Network where
import Prelude hiding ((==))
import Sort
import Message

data Pair = Conn Loc Loc | Disconn Loc Loc deriving(Show,Eq)
data NC = EmpNC | Inn Pair NC 

instance Eq NC where
EmpNC == EmpNC = True
(Inn p nc1) == nc2 = (nc_include p nc2) && (nc1 == nc2)
_ == _ = False

nc_include::Pair->NC->Bool
nc_include p EmpNC = False
nc_include p1 (Inn p2 nc) = (p1 == p2) || (nc_include p1 nc)

奇妙な部分は、(p1 == p2) と言う最後の行で、予想される型 NC と実際の型のペア エラーが一致しませんでした。つまり、p1 はペアではなく NC でなければなりません。わからないのですが、助けてもらえますか? [編集] 非表示 (==) 形式の前奏曲は、「==」演算子がある場所であいまいなエラーが発生したためです。そのためのより良い解決策も提案していただければ幸いです:D

4

1 に答える 1