用自己的Queue类型包装Data.Sequence有什么问题吗?

pap*_*uck 3 haskell

我要为我的申请排队。据我了解,Data.Sequence是生产代码的最佳选择。为了保持我的代码优雅,惯用和整体的Haskelly,在我自己的Queue数据类型中包装Data.Sequence以隐藏我不需要的功能有什么问题吗?

typ*_*ern 10

完全没错-实际上,这正是newtype目的!

理想情况下,你的类型应该反映你的意图-谁读你的代码(包括你自己,在未来,当你忘记了你做了什么以及为什么)应该能够告诉类型是什么

因此,即使您的队列只是一个Sequence,将其包装到您自己的新类型中Queue也会告诉(人类)读者“该特定序列将用于排队”-除了隐藏不需要的功能并防止混淆您的队列之外值(即没有意外地通过另一个Sequence应该是一个队列,以期望一个队列的函数)。

  • 另外,如果您想更改表示形式,这种包装非常容易,因为您已经在依赖于表示形式的构造函数中的代码中显式标记了所有位置 (4认同)