Как и Stack в течение более длительного времени, Cabal-install теперь (начиная с версии 3.2) больше не устанавливает библиотеки - в смысле изменения состояния компьютера, чтобы GHC мог получить доступ к библиотеке на нем †. Оба инструмента сейчас устанавливают только исполняемые файлы. Раньше это делалось и с библиотеками, но это было остановлено теперь по умолчанию Сборки в стиле Nix.
Теперь (и, на самом деле, уже раньше), способ использования библиотеки - это просто зависеть от нее, и позволить Кабалу за кулисами выяснить, нужно ли ее устанавливать. То есть, вы добавляете .cabal файл в ваш .hs исходный файл с build-depends: tidal в нем. Затем, когда вы скажете cabal install ., он сначала загрузит и установит библиотеку, а затем использует ее для создания собственного исполняемого файла.
† Конечно, и Stack, и Cabal, с технической точки зрения, устанавливают библиотеки, но они не глобально регистрируют их. То есть, Cabal знает, где она установила библиотеку, но вы не должны знать об этом. Это в духе непрерывной интеграции: если ваш код теперь строится с определенным состоянием установленных вами библиотек, это не очень надежно. Если он строится только с теми библиотеками, которые явно указаны в файле проекта, шансы на то, что в будущем вы (или кто-то еще) все равно сможете использовать свой код на другом компьютере, не тратя много времени на выяснение того, какие библиотеки установить. первый.
person
leftaroundabout
schedule
28.04.2020