我要为我的申请排队。据我了解,Data.Sequence是生产代码的最佳选择。为了保持我的代码优雅,惯用和整体的Haskelly,将Data.Sequence包裹在我自己的Queue数据类型中以隐藏我不需要的功能有什么问题吗?
答案 0 :(得分:10)
一点都没错-实际上,这正是newtype
的目的!
理想情况下,您的类型应该反映您的意图-读取您的代码的人(包括您自己,将来,当您忘记所做的事情以及原因之后)应该能够分辨出的类型
因此,即使您的队列只是一个Sequence
,将其包装到您自己的Queue
新类型中也会告诉(人类)读者“该特定序列将用于排队”-除了隐藏不必要的功能并防止混淆您的值的好处(即不会意外地将另一个不是的Sequence
传递给需要队列的函数)。< / p>