>>23
考えなしに深さという言葉を使ってしまいました
リストの評価についてです

Prelude> let xs = map (*2) [1..5]
Prelude> :sprint xs
xs = _
Prelude> xs `seq` ()
()
Prelude> :sprint xs
xs = _ : _
Prelude> length xs
5
Prelude> :sprint xs
xs = [_,_,_,_,_]
Prelude> xs !! 2
6
Prelude> :sprint xs
xs = [_,_,6,_,_]
Prelude> xs
[2,4,6,8,10]
Prelude> :sprint xs
xs = [2,4,6,8,10]

といったようになりますが
ある時点の評価について二つのリストが同じになる可能性があればTrue、なければFalseを出力するようなことをしたいと思っています。
例として、[_,_]と[_,_]や、_と[_,_]、_:_と[_,_]、[1,_]と[_,2]などはTrue。
[_,_,_]と[_,_]、[_,1]と[_,2]などはFalseになると言った感じです。

似たようなことがスマートにできる方法があれば教えて頂きたいです。