Haskell Platform/2010.2.0.0 において、文字列をリストに分割するため、 Text.Regex モジュールの splitRegex を利用しようとしたらエラー。 OS は Windows 7 64bit 。
Prelude> :m Text.Regex Prelude Text.Regex> splitRegex (mkRegex " ") "hoge piyo fuga"
これを実行すると、
Loading package array-0.3.0.1 ... linking ... done. Loading package bytestring-0.9.1.7 ... linking ... done. Loading package containers-0.3.0.0 ... linking ... done. Loading package syb-0.1.0.2 ... linking ... done. Loading package base-3.0.3.2 ... linking ... done. Loading package mtl-1.1.0.2 ... linking ... done. Loading package regex-base-0.93.2 ... linking ... done. Loading package regex-posix-0.94.2 ... linking ...: C:\PROGRA~2\HA SKEL~1\201020~1.0\lib\extralibs\regex-posix-0.94.2\ghc-6.12.3\HSregex-posix-0.94 .2.o: unknown symbol `_regerror' : unable to load package `regex-posix-0.94.2'
regex-compat on latest Haskell Platform : Programming Haskell Cafe によると、
For what its worth, Regex-posix worked fine with Platform 2009.2.0.2.
I follow GHC releases rather than Platform ones, so I don't know about
later versions.
このバージョンの Haskell が問題のようだ。
regex-posix パッケージを最新にする
[haskell-platform] #137: Linking error when using Text.Regex.Posix によると、
'cabal install regex-posix' can solve this problem,
コマンドラインより、
cabal install regex-posix
インストールされたことを確認するために
ghc-pkg list
しかし、依然としてエラーが表示され実行できない。
regex-compat パッケージを最新にする
regex-posix に対するパッケージの依存関係を、
ghc-pkg dot | grep "regex-posix"
により調べると、regex-compat モジュールが regex-posix に依存していることがわかる。 ( grep コマンドは Cygwin を利用)
また、Hoogle で検索すると、splitRegex はパッケージ regex-compat にあると表示される。
試しに、
cabal install regex-compat
により regex-compat もインストールしたら splitRegex を使えるようになった。
再びモジュールの依存関係を表示させたら、
"regex-compat-0.93.1" -> "regex-posix-0.94.4" "regex-posix-0.94.4" -> "array-0.3.0.1" "regex-posix-0.94.4" -> "base-4.2.0.2" "regex-posix-0.94.4" -> "bytestring-0.9.1.7" "regex-posix-0.94.4" -> "containers-0.3.0.0" "regex-posix-0.94.4" -> "regex-base-0.93.2" "regex-posix-0.94.2" -> "array-0.3.0.1" "regex-posix-0.94.2" -> "base-4.2.0.2" "regex-posix-0.94.2" -> "bytestring-0.9.1.7" "regex-posix-0.94.2" -> "containers-0.3.0.0" "regex-posix-0.94.2" -> "regex-base-0.93.2" "regex-compat-0.93.1" -> "regex-posix-0.94.2" "haskell-platform-2010.2.0.0" -> "regex-posix-0.94.2"
というようにバージョンがごっちゃになってしまったけれど大丈夫かな。。 (@_@;
インストールする順序
HackageDB: regex-posix-0.94.4 よりregex-posix をダウンロードし、
runhaskell Setup configure runhaskell Setup build runhaskell Setup install
によりインストールしてもダメだった。
- regex-posix をインストール
- regex-compat をインストール
の順で行なったときだけ動いてくれた。
0コメント:
コメントを投稿