评论者:markengelberg
问题的关键在于 subseq 允许使用 <=, <, >=, > 操作,但 seqFrom 仅允许 <=, >=,接着 subseq 以一种会导致最多一个项目被排除的方式来“处理”seqFrom 的输出并转换为 <, > 的方式,如果有多个相等的项,这就不起作用了。我认为这是一个设计缺陷,因为你可以创建一个 seqFrom 的实现,它正好完成所需的功能(生成适当的 <= 和 >= 子序列),但 subseq 和 rsubseq 可能仍然不能正确运行。
回想起来,当时的思考似乎是,"嘿,seqFrom 和 subseq/rsubseq 之间存在这种不匹配有点糟糕。让我们让集合在其 seqFrom 的实现中处理所有子序列/rsubseq 逻辑,这样就不需要将两个可能的子序列揉成四种可能的子序列了。"
可以通过修复 subseq 和 rsubseq 来舍弃所需的项目数量,而不需要对接口进行任何修改,但如果集合可以直接执行所有逻辑,那么集合可能比仅在 subseq 和 rsubseq 层面进行修复更高效地创建 <, > 子序列。
我明白了你的 Sorted2 接口观点。