gpt4 book ai didi

sorting - 按其在haskell中的元素之一对元组进行排序

转载 作者:行者123 更新时间:2023-12-04 22:30:11 26 4
gpt4 key购买 nike

我有一个这样的 list

[(1,2),(2,1),(3,3)]

我想按第二个元素对其进行排序,所以它是:
[(3,3),(1,2),(2,1)]

我试过了
mySort t = sortBy (compare `on` (\(a,b)->b)) t

但是 ghci 显然无法识别 sortBy

好的,编辑:

我正在使用 GHCi 编译实际的 .hs 文件,所以我有我的标题:
import Data.List (sortBy)
import Data.Function (on)

module TupleListPolynomial where
type Poly = [(Float,Int)]

如果我这样写,编译器将无法识别“模块”(使用 :l 和 :r btw):
[1 of 1] Compiling Main             ( TupleListPolynomial.hs, interpreted )

TupleListPolynomial.hs:5:1: parse error on input ‘module’

如果我翻转它并在下面写入导入,它将无法识别具有相同错误的“导入”。

编辑:通过这样解决:
module TupleListPolynomial where
import Data.List (sortBy)
import Data.Function (on)
type Poly = [(Float,Int)]

最佳答案

几点观察:

  • 获取 sortByon你必须先导入它们
  • 您想按降序排序,一种方法是使用 flip compare而不是 compare
  • 而不是 \ (a,b) -> b您也可以使用 snd (感谢阿农)
  • 你必须使用反引号 `而不是 '对于 `on` (感谢 interjay)
  • tmySort t = ... t不需要

  • 一种可能的解决方案:

    好的 - 如果你把它放入一些 myPolynomial.hs 中,它应该可以编译并加载和工作到 ghci 中。文件(或者你想怎么称呼它):
    module TupleListPolynomial where

    import Data.List (sortBy)
    import Data.Function (on)

    type Poly = [(Float,Int)]

    mySort :: Ord b => [(a, b)] -> [(a, b)]
    mySort = sortBy (flip compare `on` snd)

    在 GHCi 中你会写
    import Data.List (sortBy)
    import Data.Function (on)

    let mySort = sortBy (flip compare `on` snd)

    确实这就是我为这样测试它所做的:

    测试
    > mySort [(1,2),(2,1),(3,3)]
    [(3,3),(1,2),(2,1)]

    关于sorting - 按其在haskell中的元素之一对元组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30380697/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com