Установить локальную библиотеку

Как я могу "установить" локальный (т.е. он находится на моем жестком диске, а не в Интернете) файл.hs, чтобы использовать его в нескольких программах? В частности, если я редактирую библиотеку, эти изменения должны быть доступны для всех программ, поэтому не нужно копировать и вставлять библиотеку в каталог каждой программы.

Чтобы скомпилировать мои программы, я все еще хочу напечатать ghc main.hs, а не страницу путей к файлам.

Это может быть очевидно из вышесказанного, но у меня нет никаких знаний о клике.

1 ответ

  1. Убедитесь, что у вас установлена ​​правильная платформа Haskell, в том числе cabal, В качестве альтернативы вы можете использовать stack, который является более современным и во многих отношениях лучше, но IMO cabal еще более практичным для простого проекта, как ваш.
    Следующее предполагает, что вы используете cabal на типичной машине Linux.

  2. Если это еще не сделано, присвойте своему файлу осмысленное имя иерархического модуля в зависимости от того, что он делает. module Video.Demuxing.FFMPEG или же Data.List.Shuffle.Deterministic, например. Давайте предположим, что вы называете это Foo.Bar.Baz, Т.е. файл должен начинаться с

    module Foo.Bar.Baz where
    ... -- start code
    
  3. Поместите файл в соответствующую структуру папок, т.е.

    1. если это еще не сделано, создайте новую директорию проекта, например

      mkdir /home/Uꜱᴇʀɴᴀᴍᴇ/haskell/foobar
      cd /home/Uꜱᴇʀɴᴀᴍᴇ/haskell/foobar
      
    2. В этом каталоге проекта создайте подкаталог Foo, там в каталоге Bar и поместите в него свой файл как Baz.hs,

      mkdir -p Foo/Bar
      cp WʜᴇʀᴇEᴠᴇʀ/Yᴏᴜʀ/Fɪʟᴇ/Wᴀꜱ/Bᴇꜰᴏʀᴇ.hs Foo/Bar/Baz.hs
      
  4. Сделайте файл частью новой библиотеки Cabal.

    cabal init
    

    Это задаст вам пару вопросов, надеюсь, будет понятно, что выбрать. В большинстве случаев по умолчанию все будет в порядке, в этом случае всегда просто нажмите Enter.

  5. Поставьте все под контроль версий, если вы еще этого не сделали. (Если вы не знаете, что это такое, я предлагаю вам прочитать некоторые учебные пособия по Github. Вы можете пропустить этот шаг, но чем раньше вы привыкнете к некоторым VCS, тем лучше.)

  6. Установите свой проект локально.

    cabal install
    
  7. Если все работает без ошибок, вы можете в файле на Haskell, хранящемся где-то еще на компьютере, просто

    import Foo.Bar.Baz
    

    и иметь все, что вы определили в этом модуле проекта. Нет необходимости говорить GHC, где Foo.Bar.Baz хранится при компиляции, он уже зарегистрировал это на данный момент. Вы также можете запустить ghci где угодно и :m +Foo.Bar.Baz,

Другие вопросы по тегам