Как имена пакетов Hackage сопоставляются с именами 'cabal install'? - PullRequest
6 голосов
/ 15 сентября 2011

Я использую cabal для загрузки пакетов на Haskell.

Следующие работы:

> 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)

1 Ответ

12 голосов
/ 15 сентября 2011

Команда cabal install использует имена пакетов.Имена пакетов отличаются от имен модулей.Если вы заглянете на страницу взлома для текстового пакета , вы увидите, что имя пакета - «текст», но он экспортирует модуль с именем Data.Text (среди прочего).Пакеты могут экспортировать любое количество модулей, и не должно быть никакой связи между именем пакета и именем экспортируемых им модулей.

Если вы знаете, какой пакет вам нужен, но это не такзнать экспортированные модули, посмотрите на страницу взлома для этого пакета.Чтобы сделать это, я в браузере перехожу на "http://hackage.haskell.org/package/". Я заходил туда много раз, он автоматически завершается очень быстро, затем я добавляю имя пакета в конец этого URL. Если я нене знаю точное имя пакета, тогда я просто захожу на эту страницу и ищу в списке пакетов то, что мне нужно.

Обратная ситуация, когда вы знаете, какой модуль вам нужен, но не знаете, какой пакет предоставляет его.немного сложнее. В этом случае я полагаюсь на две замечательные поисковые системы Haskell: Hoogle и Hayoo .

...