Arrays 根据haskell或purescript中另一种/不同类型的数组对数组进行排序
我有两个不同类型的数组,1)比如说Arrays 根据haskell或purescript中另一种/不同类型的数组对数组进行排序,arrays,sorting,haskell,functional-programming,purescript,Arrays,Sorting,Haskell,Functional Programming,Purescript,我有两个不同类型的数组,1)比如说moduleinfoarray,它包含每个类型的元素 {name::String,pack::String} 和2)字符串数组。简单的String数组包含与moduleinfo的name字段类似的元素,即String。简单的字符串数组已排序,但模块信息数组未排序 如何编写一个函数,根据简单String数组的顺序对moduleinfo数组进行排序。假设moduleinfo中的name字段将与简单的String数组元素匹配 该函数应返回一个已排序的moduleinf
moduleinfo
array,它包含每个类型的元素
{name::String,pack::String}
和2)字符串
数组。简单的String
数组包含与moduleinfo
的name
字段类似的元素,即String
。简单的字符串
数组已排序,但模块信息
数组未排序
如何编写一个函数,根据简单String
数组的顺序对moduleinfo
数组进行排序。假设moduleinfo
中的name
字段将与简单的String
数组元素匹配
该函数应返回一个已排序的
moduleinfo
类型数组。我建议您直接对moduleinfo
进行排序:
sortedModuleInfo = sortWith (\(Module name1 pack1) (Module name2 pack2) -> compare name1 name2) moduleinfo
在这里,我假设您已经声明了一个名为
Module
的类型,其中包含您在问题中显示的name
和pack
元素。如果name
s中的一个不在String
s的排序列表中,该怎么办?我建议您直接对moduleinfo
进行排序。注意您应该发布将要编译的完整代码。特别是,{name::String,pack::String}
会导致编译器错误,因为您缺少数据和数据类型的名称。使用排序数组在排序数组中创建从模块名称到索引的哈希映射或triemap。