我想要一个应用程序队列。根据我所读到的内容,Data.Sequence是生产代码的最佳选择。为了保持我的代码优雅、惯用和整体 Haskelly,将 Data.Sequence 包装在我自己的队列数据类型中以隐藏我不需要的功能有什么问题吗?
一点都没有错——事实上,这正是newtype
的目的!
理想情况下,你的类型应该反映你的意图——任何阅读你的代码的人(包括你自己,将来,当你忘记你做了什么以及为什么(应该能够知道一个类型的用途
。因此,即使您的队列只是一个Sequence
,将其包装到您自己的 Queue
newtype 中也会告诉(人类(读者"这个特定的序列将用于排队"——除了隐藏不需要的功能的好处,并防止混淆你的值(即不会意外地将另一个不应该是队列的Sequence
传递给需要队列的函数(。