当前位置:  开发笔记 > 编程语言 > 正文

如何在Haskell中提取列表的所有唯一对?

如何解决《如何在Haskell中提取列表的所有唯一对?》经验,为你挑选了1个好方法。

我对Haskell很新,我有一个问题.如何编写函数来返回列表中所有唯一可能的对?如:[1,2,3,4] - > [(1,2),(1,3),(1,4),(2,3),(2,4),(3,4)]



1> shang..:

使用列表理解是最简单的方法.

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], []]列表理解从每个尾部中选取第一个元素,并将其与该尾部中的其余元素配对.


这应该是答案。其他答案要求列表的元素具有“ Ord”或“ Eq”实例。
推荐阅读
惬听风吟jyy_802
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有