Установить локальную библиотеку
Как я могу "установить" локальный (т.е. он находится на моем жестком диске, а не в Интернете) файл.hs, чтобы использовать его в нескольких программах? В частности, если я редактирую библиотеку, эти изменения должны быть доступны для всех программ, поэтому не нужно копировать и вставлять библиотеку в каталог каждой программы.
Чтобы скомпилировать мои программы, я все еще хочу напечатать ghc main.hs, а не страницу путей к файлам.
Это может быть очевидно из вышесказанного, но у меня нет никаких знаний о клике.
1 ответ
Убедитесь, что у вас установлена правильная платформа Haskell, в том числе
cabal
, В качестве альтернативы вы можете использоватьstack
, который является более современным и во многих отношениях лучше, но IMOcabal
еще более практичным для простого проекта, как ваш.
Следующее предполагает, что вы используетеcabal
на типичной машине Linux.Если это еще не сделано, присвойте своему файлу осмысленное имя иерархического модуля в зависимости от того, что он делает.
module Video.Demuxing.FFMPEG
или жеData.List.Shuffle.Deterministic
, например. Давайте предположим, что вы называете этоFoo.Bar.Baz
, Т.е. файл должен начинаться сmodule Foo.Bar.Baz where ... -- start code
Поместите файл в соответствующую структуру папок, т.е.
если это еще не сделано, создайте новую директорию проекта, например
mkdir /home/Uꜱᴇʀɴᴀᴍᴇ/haskell/foobar cd /home/Uꜱᴇʀɴᴀᴍᴇ/haskell/foobar
В этом каталоге проекта создайте подкаталог
Foo
, там в каталогеBar
и поместите в него свой файл какBaz.hs
,mkdir -p Foo/Bar cp WʜᴇʀᴇEᴠᴇʀ/Yᴏᴜʀ/Fɪʟᴇ/Wᴀꜱ/Bᴇꜰᴏʀᴇ.hs Foo/Bar/Baz.hs
Сделайте файл частью новой библиотеки Cabal.
cabal init
Это задаст вам пару вопросов, надеюсь, будет понятно, что выбрать. В большинстве случаев по умолчанию все будет в порядке, в этом случае всегда просто нажмите Enter.
Поставьте все под контроль версий, если вы еще этого не сделали. (Если вы не знаете, что это такое, я предлагаю вам прочитать некоторые учебные пособия по Github. Вы можете пропустить этот шаг, но чем раньше вы привыкнете к некоторым VCS, тем лучше.)
Установите свой проект локально.
cabal install
Если все работает без ошибок, вы можете в файле на Haskell, хранящемся где-то еще на компьютере, просто
import Foo.Bar.Baz
и иметь все, что вы определили в этом модуле проекта. Нет необходимости говорить GHC, где
Foo.Bar.Baz
хранится при компиляции, он уже зарегистрировал это на данный момент. Вы также можете запустить ghci где угодно и:m +Foo.Bar.Baz
,