如何在元组列表中找到所有最小元素?

lla*_*o25 7 haskell list minimum

如何找到列表中的所有最小元素?现在我有一个元组列表,即

[(10,'a'),(5,'b'),(1,'c'),(8,'d'),(1,'e')]
Run Code Online (Sandbox Code Playgroud)

因此,我希望输出是新列表中列表的所有最小元素。例如

 [(1,'c'),(1,'e')]
Run Code Online (Sandbox Code Playgroud)

我试过了

minimumBy (comparing fst) xs
Run Code Online (Sandbox Code Playgroud)

但这只会返回第一个最小元素。

Wil*_*sem 6

在获得第一个值的最小值之后,我们可以过滤这些项目上的列表。因为您要在此处检索最少项目列表,所以我们也可以通过返回一个空列表来覆盖空列表:

minimumsFst :: Ord a => [(a, b)] -> [(a, b)]
minimumsFst [] = []
minimumsFst xs = filter ((==) minfst . fst) xs
    where minfst = minimum (map fst xs)
Run Code Online (Sandbox Code Playgroud)

例如:

Prelude> minimumsFst [(10,'a'),(5,'b'),(1,'c'),(8,'d'),(1,'e')]
[(1,'c'),(1,'e')]
Run Code Online (Sandbox Code Playgroud)