3

有没有Data.Binary实例Data.Time.Calendar.Day

Data.Binary更一般地说,如果没有为广泛使用的库中的特定数据类型提供一个应该做什么?

4

1 回答 1

1

如果您只是创建一个Binary实例并将其放置在您的模块中,那么您将创建一个孤儿实例,这可能会在以后有人导入您的模块时引起很多混乱——它会拖着该孤儿实例并可能与他们的冲突了解应如何制定日期Binary

如果您有一个非常规范的实例,请尝试将其推送给库作者。如果这是一个好主意,添加实例很容易,并且它可以使使用该库的任何人受益。

如果这不是一个选项(或者如果您有一个非规范实例),那么您可能想要创建一个newtype包装器。它们是“免费的”,因为编译器会自动删除它们,但它们允许类型通过新的类型类实例呈现全新的身份。

我以前做过这个来处理特定的解析,例如,与广义相比,“这种格式的日期”。Date

于 2013-11-05T15:01:31.683 回答