是否有一些Haskell函数可以列出一个列表,比如双打,如下:
[0.5, 0.6, 0.1, 0.7]
并返回一个整数列表,它们按顺序表示项目的索引。在上述情况下,它将是:
[2, 0, 1, 3]
注意:我想要实现的是一些函数(让我们称之为consistent
),它可以比较两个双精度列表,并告诉用户列表的相对排序是否一致:
> consistent [1.0, 2.0, 3.0] [2.1 3.5 4.6]
True
> consistent [1.0, 2.0, 3.0] [3.0, 2.0, 1.0]
False
答案 0 :(得分:2)
您可以使用[0..]
压缩列表,将每个项目与其索引配对。然后,您可以对该列表进行排序,并使用map来获取每对(索引)的第二个元素。
答案 1 :(得分:0)
我认为你也可以这样做:
swap (a, b) = (b, a)
consistent a b = sort (zip a b) == map swap $ sort (zip b a)
我从来没有在Haskell中认真编码,所以语法只是在几个月前阅读“了解自己是一个Haskell ...”之后与我记忆中的相似之处。