Data.Binary
是否有Data.Time.Calendar.Day
个实例?
更一般地说,如果在广泛使用的库中没有为特定数据类型提供Data.Binary
,应该做什么?
答案 0 :(得分:1)
如果您只是创建一个Binary
实例并将其放置在您的模块中,那么您将创建一个孤立实例,以后当有人导入您的模块时会导致很多混乱 - 它会拖延那个孤儿实例,可能与他们对日期的理解有冲突Binary
。
如果您有一个非常规范的实例,请尝试将其推送到库作者。如果它是一个好主意,它很容易添加实例,它可以使任何使用该库的人受益。
如果这不是一个选项(或者如果你有一个非规范实例),那么你可能想要创建一个newtype
包装器。它们是“免费的”,因为编译器会自动删除它们,但是它们允许类型在新的类型类实例中采用全新的标识。
我之前已经完成了这项工作,以处理特定的解析,例如“此格式的日期”与Date
广泛相比。