haskell求助 怎么写俩俩组合配对的list???

  • 回答 (0)
  • 关注 (0)
  • 查看 (39)

我刚刚开始学习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 我做了俩天了实在想不出该怎么做

用户6797589用户6797589提问于

扫码关注云+社区

领取腾讯云代金券