2011-09-14 7 views
6

私はcabalを使ってHaskellパッケージをダウンロードしています。Hackageパッケージ名はどのように 'cabal install'の名前にマッピングされますか?

次作品:

> cabal install JSON 

それはText.JSONが

しかし、これは失敗します:

> cabal install Data.List.Key 
cabal: "Data.List.Key" is not valid syntax for a package name or package 
dependency. 

構文の問題はここで何ですか?キャバルにData.List.Keyを取得させるにはどうすればよいですか?一般に、X.Yという名前のパッケージの場合、パッケージを見つけるにはどのような名前のcabal installが必要ですか? (私はなぜcabal install JSONがText.JSONを取得し、Foobarbaz.JSONを取得しないのか混乱している)

+3

使用される名前は、ハッキングのパッケージ名です。あなたのケースでは 'cabal install utility-ht'はうまく動作するはずです。 http://hackage.haskell.org/package/utility-ht-0.0.7 – is7s

+2

私は、Haskellが**モジュール名を**と呼んでいることは多かれ少なかれJava(とおそらく他の言語)**パッケージ名**を呼び出します。 HaskellモジュールはJavaパッケージに似ていますが、HaskellパッケージはJavaワールドがライブラリやプロジェクトと呼ぶようなものです。 – MatrixFrog

+0

@MatrixFrog - そうですね、それは私を混乱させるものでした。ありがとう! –

答えて

12

cabal installコマンドではパッケージ名が使用されます。パッケージ名はモジュール名とは異なります。 hackage page for the text packageを見ると、パッケージ名は "text"ですが、Data.Textというモジュールがエクスポートされていることがわかります。パッケージは任意の数のモジュールをエクスポートすることができ、パッケージの名前とそれがエクスポートするモジュールの名前との間には何の関係もなくてもかまいません。

あなたが望むパッケージを知っていて、エクスポートされたモジュールがわからない場合は、そのパッケージのハッキングページを見てください。これを行うには、私のブラウザで "http://hackage.haskell.org/package/"に行きます。私は何度もそこに行ってきました、それは非常に迅速に自動完成し、その後、そのURLの最後にパッケージ名を追加します。正確なパッケージ名がわからない場合は、そのページに行き、パッケージリストから自分が望むものを探します。

あなたが望むモジュールを知っているが、どのパッケージがそれを提供しているのかわからないという逆の状況は少し難しいです。この場合、私は2つの素敵なHaskell検索エンジン、すなわちHoogleHayooに頼っています。

+1

また、 'site:hackage.haskell.org'を使った簡単なGoogleの検索では、通常、パッケージを見つけるうえでうまくやっています。 (PageRankのおかげで古いバージョンのパッケージに導かれる傾向があります)。 – hammar

関連する問題