我刚刚开始学习haskell遇到个题目做不出来,要求写一个function.
它接受一个长度为偶数的 list 和一个条件返回新的list
findBonding :: Eq a => (a -> a -> Bool) -> [a] -> Maybe [(a,a)]
元组 list 满足所有元素都是从原list来的且出现一次 就是俩俩组合
[1, 2, 3, 4] 得到 [(1,2),(3,4)] or [(1,3),(2,4)] or [(1,4),(2,3)]
[1,2,3,4,5,6] 得到[(1,2),(3,4),(5,6)] or [(1,3),(2,4),(5,6)] or....
这是我已经写的代码,只能返回符合条件f的所有可能组合,但是弄不出俩俩组合的样子
findBonding :: Eq a => (a -> a -> Bool) -> [a] -> Maybe [(a,a)]
findBonding f xs
|length xs `mod`2/=0 =Nothing
| and [elem (y, x) rel | (x, y) <- rel]
= Just(rel)
| otherwise = Nothing
where
rel = [(a, b) | a <- xs, b <- xs, a /= b, f a b]
T T 我做了俩天了实在想不出该怎么做
相似问题