2012-09-12 78 views
1

我正在更新我的ReadArgs package。我曾要求爲Data.Text和FileSystem.Path.FilePath添加Arguable實例。前者是沒什麼大不了的,因爲它是在base包,但後者需要system-filepath創建孤立實例或添加虛假依賴關係?

所以,我可以釋放ReadArgs-ext包,充滿了孤兒情況的,我也可以有額外的外部依賴更新ReadArgs包。哪個選項更有意義?

+2

我肯定會說-exts。如果人們需要它們,你希望這些實例可用,而不是強迫依賴它們,這樣這些實例實際上可用。 只要確保文檔中明確指出有這些實例的另一個包。 – identity

回答

3

我通常的經驗法則是傾向於爲Haskell Platform中的包添加實例,但不涉及較少的便攜式元素,如圖形。這涵蓋filepathtext。既然你已經在處理外部世界的命令行參數,那麼這些都不是特別令人震驚的加法。

孤兒會導致非常可怕的問題。

我沒有在我的包中使用它們95%,並且我會盡我所能避免使用它們的包。

兩個例外我在這一點上是reducers和包裝完整的vector-instances我拿起幾個失蹤類羣,因爲我不願意讓我的整個層次的軟件包依賴於vector,從Safe降級一切Trustworthy

我發現當我試圖添加一個孤兒實例時,我通常可以通過提供某種WrappedMonad類新型包裝來提升或降低另一個類。