【发布时间】:2018-02-11 02:41:15
【问题描述】:
这段代码有效,但它很冗长,我相信还有更简洁的方法。
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
其背后的想法是,如果一件事先于另一件事开始,则应将其称为较小的,甚至不要看其他两个领域。类似地,如果它们同时开始,但其中一个更简短,那么那个更简短的那个就更少,您可以忽略第三个字段。
【问题讨论】:
标签: haskell lexicographic