Sml 按字典顺序对一系列整洁的列表进行排序
考虑以下嵌套列表:Sml 按字典顺序对一系列整洁的列表进行排序,sml,Sml,考虑以下嵌套列表: [["AXY"],["ABC","XYZ"],["EFG","ACF"]] 我想按每个内部列表的第一个元素按字典顺序对列表进行排序。输出应为: [["ABC","XYZ"],["AXY"],["EFG","ACF"]] 如果任务是只对一个列表进行排序,我将使用以下线程()中的方法之一。但是如何对嵌套列表进行排序呢?假设有一个通用排序函数使用cmp函数(如图所示),则只需编写一个包含两个字符串列表的排序函数: fun cmpnest ((x::xs):string list
[["AXY"],["ABC","XYZ"],["EFG","ACF"]]
我想按每个内部列表的第一个元素按字典顺序对列表进行排序。输出应为:
[["ABC","XYZ"],["AXY"],["EFG","ACF"]]
如果任务是只对一个列表进行排序,我将使用以下线程()中的方法之一。但是如何对嵌套列表进行排序呢?假设有一个通用排序函数使用cmp函数(如图所示),则只需编写一个包含两个字符串列表的排序函数:
fun cmpnest ((x::xs):string list, (y::ys):string list) = if x > y then GREATER else LESS
| cmpnest ((x::xs):string list, nil) = GREATER
| cmpnest (nil, _) = LESS
完成后,您可以在通用排序函数中使用它:
- sort cmpnest [["AXY"], ["ABC", "XYZ"], ["EFG", "ACF"]];
> val it = [["ABC", "XYZ"], ["AXY"], ["EFG", "ACF"]] : string list list
除了L3viathan的答案之外,您还可以使用
String.compare
:
fun cmpnest (x::_, y::_) = String.compare (x, y)
| cmpnest (_::_, []) = GREATER
| cmpnest ([], _) = LESS