📜  sortOn haskell (1)

📅  最后修改于: 2023-12-03 14:47:31.209000             🧑  作者: Mango

Haskell中的sortOn函数

在Haskell编程语言中,sortOn函数是对列表中的元素进行排序的一种常用方法。sortOn函数根据给定的键函数对列表中的元素进行排序,并返回一个新的排序列表。

函数签名
sortOn :: (Ord b) => (a -> b) -> [a] -> [a]
  • sortOn函数接受一个类型为a的列表和一个类型为b的键函数作为参数,并返回一个元素类型为a的排序列表。
  • 键函数将类型为a的元素映射到类型为b的键,决定了元素的排序顺序。
  • b类型必须是有序的,所以要求b实现了Ord类型类。
示例

假设我们有一个Person类型的列表,每个Person对象包含姓名和年龄属性。

data Person = Person { name :: String, age :: Int } deriving (Show)

我们想根据人物的年龄对列表进行排序。可以这样定义一个键函数:

sortByAge :: Person -> Int
sortByAge = age

现在我们可以使用sortOn函数根据年龄对Person对象进行排序:

people = [Person "Alice" 25, Person "Bob" 32, Person "Charlie" 18]
sortedPeople = sortOn sortByAge people

以上代码将返回一个按年龄从小到大排序的人物列表。

注意事项
  • sortOn函数是按照键函数的结果进行排序的,而不是根据键函数的自然顺序进行排序。
  • 如果两个元素的键函数结果相等,它们在排序后的列表中的相对顺序将保持不变。

希望以上信息对你对sortOn函数有所帮助。你可以在Haskell的官方文档中了解更多有关sortOn函数的详细信息。