gpt4 book ai didi

haskell - 对于字典序 Ord 实例来说,优雅的习惯用法是什么?

转载 作者:行者123 更新时间:2023-12-02 06:28:14 24 4
gpt4 key购买 nike

这段代码可以工作,但是很冗长,我确信有更简洁的方法。

import qualified Data.Vector as V

data Event a = Event { start :: Time
, duration :: Time
, payload :: Maybe a } deriving (Show, Eq)

instance Ord a => Ord (Event a) where
(<=) a b = start a < start b
|| start a == start b && duration a < duration b
|| start a == start b && duration a == duration b && payload a <= payload b

其背后的想法是,如果一件事在另一件事之前开始,您应该将其称为较小的,甚至不看其他两个字段。同样,如果它们同时开始,但其中一个比较简短,则较短的那个较小,您可以忽略第三个字段。

最佳答案

使用派生:

data Event a = Event { start :: Time
, duration :: Time
, payload :: Maybe a } deriving (Show, Eq, Ord)

派生实例自动按字典顺序排列。

关于haskell - 对于字典序 Ord 实例来说,优雅的习惯用法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48727762/

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