私は複雑で再帰的なデータ構造を持っていますが、これを次のように簡略化しました。
data Node = Node { value :: Integer, next :: Node } deriving (Show,Eq)
次の式が与えられます:
--Create a circular structure
a = Node 1 b
b = Node 0 a --Tie the knot
c = Node 1 b --Another structure which points to b
式a
とc
は概念的に同じです。どちらも値1を保持し、式bを指すノードを表します。私の質問は、Haskell式でそれらが実際に等しいことをどのように確認するのですか?私が評価a == c
すると、円形構造のサブ要素を永久に評価し続けます。
Haskellでそのような比較を行うことは可能ですか?
編集:私の場合、検査/デバッグの目的で2つを比較しようとしています。しかし、これを行うもう1つの理由は、単体テストのためである可能性があります。