如何在Nim中对序列进行排序?

ale*_*inn 5 sorting list-comprehension nim-lang

我有一个由列表推导生成的序列如下:

var a_bigram_list = lc[a[i..i+2] | (i <- 0..<len(a)), string]
Run Code Online (Sandbox Code Playgroud)

现在,我想对它进行排序,但sort(a_bigram_list)会导致以下编译错误

Error: type mismatch: got (seq[string])
but expected one of: 
proc sort[A, B](t: OrderedTableRef[A, B]; cmp: proc (x, y: (A, B)): int)
proc sort[A, B](t: var OrderedTable[A, B]; cmp: proc (x, y: (A, B)): int)
proc sort[A](t: CountTableRef[A])
proc sort[A](t: var CountTable[A])
proc sort[T](a: var openArray[T]; cmp: proc (x, y: T): int; order = SortOrder.Ascending)
Run Code Online (Sandbox Code Playgroud)

有什么方法可以对序列进行排序吗?或者我需要将其转换为数组?如果是这样,有没有办法从lc获取数组?

And*_*rat 8

sort使用序列(openArray是一个接受arrays和seqs 的通用参数类型),但它期望比较proc作为第二个参数.

您可以从系统模块提供默认cmp:

sort(a_bigram_list, system.cmp)
Run Code Online (Sandbox Code Playgroud)