包版本控制策略 - 无害类型更改?

Hei*_*mus 8 haskell cabal

包的版本策略指定改变任何实体的类型使得的变化数量ABC必要的.

但是,在我看来,某些类型更改不会破坏依赖代码.特别是,请考虑以下示例,其中我删除了一个Typeable类约束:

- foo :: Typeable a => AddHandler a -> NetworkDescription (Event a)
+ foo :: AddHandler a -> NetworkDescription (Event a)
Run Code Online (Sandbox Code Playgroud)

所以,我的问题是:

可以在函数break依赖代码上删除类型类约束吗?在引入此更改时,我应该更改B编号还是仅更改ABC版本中的C

Joa*_*ner 4

我已经在-cafe上回复了,但我\xe2\x80\x99ll也把我的答案放在这里:

\n\n

你应该撞一下C号。PVP规则2 指定 API 添加意味着版本的 C 部分将增加。删除约束的行为就像添加一个新函数:之前有效的代码可以继续工作,但针对新 API 编写的代码可能不适用于旧 API。

\n\n

因此,如果程序员针对 foo 0.1.2 版本开发代码,他\xe2\x80\x99d 将指定foo >= 0.1.2 && < 0.2为要求。他不希望他的代码适用于 foo-0.1.1。这对于消除约束效果很好。

\n