gpt4 book ai didi

sorting - Haskell:带有多个参数的 SortBy(出生日期)

转载 作者:行者123 更新时间:2023-12-04 22:18:32 25 4
gpt4 key购买 nike

我正在尝试使用 sortBy 根据 Y > M > D 优先级对出生日期列表进行排序。

由于嵌套守卫是不可能的,我想出了这种丑陋的解决方案:

sortBD (day1, month1, year1) (day2, month2, year2)
| year1 < year2 = GT
| year1 < year2 = LT -- Typo: < should be >
| year1 == year2 = if compare month1 month2 == EQ then compare day1 day2 else compare month1 month2

然而,由于非穷举模式,这会返回一个异常。

[编辑]:为了避免其他人遇到同样问题的困惑:上面代码中的问题是一个错字,正如答案中指出的那样,而不是方法本身。

最佳答案

您还没有涵盖 year1 > year2 案例,因为您在这一行有一个错字:

  | year1 < year2 = GT

无需小心地处理 EQ s 和非 EQ s,您可以只使用 MonoidOrdering 实例来组合结果:
sortBD (d1, m1, y1) (d2, m2, y2)
= compare y1 y2
<> compare m1 m2
<> compare d1 d2

更好的是,元组实例已经这样做了,所以你可以重用它:
sortBD (d1, m1, y1) (d2, m2, y2) = compare (y1, m1, d1) (y2, m2, d2)

关于sorting - Haskell:带有多个参数的 SortBy(出生日期),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48144977/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com