我正在更新我的ReadArgs 包。Arguable
我有一个为 Data.Text 和FileSystem.Path.FilePath添加实例的请求。前者没什么大不了的,因为它在base
包装中,但后者需要system-filepath
所以我可以发布一个ReadArgs-ext
包,塞满孤儿实例,或者我可以ReadArgs
用一个额外的外部依赖来更新这个包。哪个选项更有意义?
我正在更新我的ReadArgs 包。Arguable
我有一个为 Data.Text 和FileSystem.Path.FilePath添加实例的请求。前者没什么大不了的,因为它在base
包装中,但后者需要system-filepath
所以我可以发布一个ReadArgs-ext
包,塞满孤儿实例,或者我可以ReadArgs
用一个额外的外部依赖来更新这个包。哪个选项更有意义?
我通常的经验法则是倾向于为 Haskell 平台中的包添加实例,但不涉及较少可移植的元素,例如图形。这涵盖了filepath
和text
。由于您已经在与外部世界处理命令行参数,因此这些都不是特别令人震惊的添加。
孤儿会导致非常可怕的问题。
我没有在 95% 的包中使用它们,而且我会竭尽全力避免使用它们的包。
在这一点上,我遇到的两个例外是一些丢失的幺半群reducers
和一个装满vector-instances
我捡起的包,因为我不愿意让我的整个包层次结构都依赖于vector
,将所有内容从 . 降级Safe
为Trustworthy
.
我发现当我想添加一个孤立实例时,我通常可以通过提供某种类似WrappedMonad
newtype 的包装器来提升或降低另一个类来解决它。