3

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 "" = ""

次に、しようとするとエラーが発生しますimport Data.String (lines)

Module `Data.String' does not export `lines'

そんなことができたら本当にいいですね。そうでない場合、そのような状況でのベスト プラクティスは何ですか? そのような拡張機能はどこに配置する必要がありますか?

ありがとうございました。

アップデート

拡張機能をライブラリとしてリリースする予定はありません。プロジェクト内で意味のある方法で整理したいだけです。

4

1 に答える 1

10

いいえ、これは不可能です。人々が過去に使った解決策の 1 つは、あなたの追加を のような名前のモジュールに入れ、Data.String.Extraそのモジュールを Hackage でリリースすることです (あなたの追加が他の人に役立つと思われる場合)。

または、拡張機能を標準ライブラリに含めるよう提案することもできます。

于 2013-10-08T09:53:08.120 に答える