05/05/22 21:57:54
>>591
こんなのでどうかな。
題意を理解していないので間違ってたらスマソ
import List
inEqvCl :: Eq a => (a, a) -> [(a, a)] -> Bool
inEqvCl _ [] = False
inEqvCl (x, y) s
| x == y = True
| y `elem` ns = True
| otherwise = any con ns
where
ns = map snd $ filter ((==x) . fst) exts
exts = s ++ map (uncurry $ flip (,)) s
con n = inEqvCl (n, y) (s\\[(x, n), (n, x)])