dar*_*495 4 sorting haskell tuples elements
我有这样的清单
[(1,2),(2,1),(3,3)]
Run Code Online (Sandbox Code Playgroud)
我想用第二个元素对它进行排序,所以它是:
[(3,3),(1,2),(2,1)]
Run Code Online (Sandbox Code Playgroud)
我试过了
mySort t = sortBy (compare `on` (\(a,b)->b)) t
Run Code Online (Sandbox Code Playgroud)
但ghci显然没有认识到
好的,编辑:
我正在使用GHCi编译实际的.hs文件,所以我有我的标题:
import Data.List (sortBy)
import Data.Function (on)
module TupleListPolynomial where
type Poly = [(Float,Int)]
Run Code Online (Sandbox Code Playgroud)
如果我这样写,编译器将无法识别'module'(使用:l和:r btw):
[1 of 1] Compiling Main ( TupleListPolynomial.hs, interpreted )
TupleListPolynomial.hs:5:1: parse error on input ‘module’
Run Code Online (Sandbox Code Playgroud)
如果我翻转它并写下面的导入它将无法识别具有相同错误的'import'.
编辑:通过这样解决:
module TupleListPolynomial where
import Data.List (sortBy)
import Data.Function (on)
type Poly = [(Float,Int)]
Run Code Online (Sandbox Code Playgroud)
Car*_*ten 11
一些观察:
sortBy,on你必须先导入它们flip compare而不是compare\ (a,b) -> b你也可以使用snd(感谢Arnon)`,而不是'为`on`(感谢interjay)t在mySort t = ... t不需要好的 - 这个应该编译并加载并运行到ghci如果你把它放入一些myPolynomial.hs文件(或者你想要调用它):
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)
Run Code Online (Sandbox Code Playgroud)
import Data.List (sortBy)
import Data.Function (on)
let mySort = sortBy (flip compare `on` snd)
Run Code Online (Sandbox Code Playgroud)
事实上这就是我做的测试方式:
> mySort [(1,2),(2,1),(3,3)]
[(3,3),(1,2),(2,1)]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6124 次 |
| 最近记录: |