我对Haskell很新,我有一个问题.如何编写函数来返回列表中所有唯一可能的对?如:[1,2,3,4] - > [(1,2),(1,3),(1,4),(2,3),(2,4),(3,4)]
使用列表理解是最简单的方法.
import Data.List pairs :: [a] -> [(a, a)] pairs l = [(x,y) | (x:ys) <- tails l, y <- ys]
这仅生成相关对,因此您不必将任何重复项过滤为单独的步骤.tails [1,2,3,4]
生成尾部列表,[[1,2,3,4], [2,3,4], [3,4], [4], []]
列表理解从每个尾部中选取第一个元素,并将其与该尾部中的其余元素配对.