2011-09-14 14 views
6

Haskell paketlerini indirmek için cabal kullanıyorum.Hackage paket adları 'cabal install' isimleriyle nasıl eşleştirilir?

aşağıdaki çalışır:

> cabal install JSON 

O Text.JSON

Ancak bu başarısız olur:

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

sözdizimi Burada sorun nedir? Cabal'ı Data.List.Key nasıl alabilirim? Genel olarak, X.Y adında bir paket için, paketi bulmak için cabal install neyin adı gerekir? (Neden cabal install JSON'un Text.JSON ve Foobarbaz.JSON öğesinin neden kullanılmadığını karıştırdım)

+3

Kullanılan ad, hackage'deki paketin adıdır. Senin dava için 'cabal install utility-ht' iyi çalışmalıdır. http://hackage.haskell.org/package/utility-ht-0.0.7 – is7s

+2

Sanırım karışıklık, Haskell'in bir ** modül adı olarak adlandırdığı **, Java'nın (ve muhtemelen başka dillerle) hemen hemen aynı olmasıdır. ** bir paket adı ** arayın. Bir Haskell modülü bir Java paketi gibidir, bir Haskell paketi ise Java dünyasının bir kütüphane veya proje olarak adlandırdığı gibi. – MatrixFrog

+0

@MatrixFrog - evet, bu beni kafa karıştırıcı bir şeydi. Teşekkürler! –

cevap

12

cabal install komutu, paket adlarını kullanır. Paket adları modül adlarından farklıdır. hackage page for the text package'a bakarsanız, paket adının "metin" olduğunu görürsünüz, ancak Data.Text (diğerleri arasında) adlı bir modülü dışa aktarır. Paketler herhangi bir sayıda modül ihraç edebilir ve paketin adı ile ihraç ettiği modüllerin adı arasında herhangi bir ilişki olması gerekmez.

İstediğiniz bir paket biliyorsanız, ancak dışa aktarılan modülleri bilmiyorsanız, bu paketin bilgisayar korsanlığı sayfasına bakın. Bunu yapmak için tarayıcımda "http://hackage.haskell.org/package/" adresine gidiyorum. Çok fazla oraya gittim, çok çabuk otomatik tamamlar, sonra paketin adını bu URL'nin sonuna eklerim. Tam olarak paket adını bilmiyorsam, o sayfaya gidip istediğim için paket listesini araştırıyorum.

Hangi modülü istediğinizi bildiğiniz ancak hangi paketi sağladığını bilmediğiniz konuşma durumu biraz daha zordur. Bu durumda, iki harika Haskell arama motoruna güveniyorum: Hoogle ve Hayoo.

+1

Ayrıca, site: hackage.haskell.org ile sade bir Google araması genellikle paket bulma konusunda iyi bir iş çıkarmaktadır. (PageRank nedeniyle, sizi paketlerin eski sürümlerine yönlendirmek eğilimindedir). – hammar