05/05/24 05:44:25
とりあえず問題が2つありました。
1. 反射的閉包なんで、inEqvCl (x,x) [] == Trueにならないといけない。
>>592さんのからinEqvCl _ [] = Falseを取り除けばOK。
2. (\\)は最初の1つしか取り除かないので、最初の集合に対称なものがあると拙い。
(\\)の代わりに下の(//)を使って対処。
(//) :: Eq a => [a] -> [a] -> [a]
xs // ys = [ x | x <- xs, x `notElem` ys ]
>>596
無限リストは今回は対象外なので問題ないです。(^^;