扩展Haskell模
有没有办法在Haskell中扩展库模块 例如,我想将扩展Haskell模,haskell,module,libraries,Haskell,Module,Libraries,有没有办法在Haskell中扩展库模块 例如,我想将firstToLower函数添加到Data.String。当我创建自己的Data.String时,它会屏蔽库1: module Data.String where import Prelude import Data.Char (toLower) firstToLower :: String -> String firstToLower (c:cs) = toLower c : cs firstToLower "" = "" 然后我
firstToLower
函数添加到Data.String
。当我创建自己的Data.String时,它会屏蔽库1:
module Data.String where
import Prelude
import Data.Char (toLower)
firstToLower :: String -> String
firstToLower (c:cs) = toLower c : cs
firstToLower "" = ""
然后我在尝试导入数据时出错。字符串(行)
:
如果能做到这一点,那就太好了。如果没有,针对这种情况的最佳做法是什么?这些扩展应该放在哪里
多谢各位
更新
我不打算以库的形式发布我的扩展,只是想在我的项目中以一种有意义的方式组织它。不,这是不可能的。人们需要的一个解决方案是将您添加的内容放在一个名为
Data.String.Extra
的模块中,并在Hackage上发布该模块(如果您认为您添加的内容可能对其他人有用)
或者,您可以。简而言之,您不能扩展haskell模块。您的用例是什么?我已经在我的问题中描述了用例。我在寻求一种方法来处理我从库中丢失的函数。我不想把它和我的普通代码混在一起,因为它们自然属于库。而且,对于标准库模块来说,您的示例函数是非常具体和琐碎的。注意,您的实现不是很地道,我更喜欢
firstToLower(c:cs)=tolowerc:cs;firstToLower“=”
@leftaroundaoundabout,您的版本更干净了,谢谢。我不打算将我的扩展作为库发布,只是想以一种有意义的方式将其组织到我的项目中。我可能会听从你的建议,把它放在*。额外的。非常感谢。
Module `Data.String' does not export `lines'