3

有没有办法在 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'

如果这样的事情是可能的,那就太好了。如果不是,那么这种情况的最佳做法是什么?这些扩展应该放在哪里?

谢谢你。

更新

我不打算将我的扩展作为一个库发布,只是想以一种有意义的方式在我的项目中组织它。

4

1 回答 1

10

不,这是不可能的。人们过去使用的一种解决方案是将您添加的内容放在一个名称为 like 的Data.String.Extra模块中,然后在 Hackage 上发布该模块(如果您认为您的添加可能对其他人有用)。

或者,您可以提议您的扩展以包含在标准库中。

于 2013-10-08T09:53:08.120 回答