有没有办法在Haskell中扩展库模块?
例如,我想将firstToLower
函数添加到Data.String
。当我创建自己的Data.String
时,它会掩盖一个库:
module Data.String where
import Prelude
import Data.Char (toLower)
firstToLower :: String -> String
firstToLower (c:cs) = toLower c : cs
firstToLower "" = ""
然后我在尝试import Data.String (lines)
时遇到错误:
Module `Data.String' does not export `lines'
如果可能的话,这将是非常好的。如果没有,这种情况的最佳做法是什么?应该放置哪些扩展名?
谢谢。
更新
我不打算将我的扩展版本作为库发布,只是想以有意义的方式在我的项目中进行组织。
答案 0 :(得分:10)
不,这是不可能的。人们have used in the past的一个解决方案是将您的添加内容添加到名为Data.String.Extra
的模块中,并在Hackage上发布该模块(如果您认为您的添加对其他人有用)。
或者,您可以propose your extension for inclusion in the standard library。