Не удается загрузить файл, который использует стандартные библиотеки в haskell - PullRequest
2 голосов
/ 06 апреля 2020

Привет! Я использую GHCI и могу нормально загружать свои файлы. Теперь мне нужно загрузить файл, который использует случайный. Я получаю эту ошибку.

Chatterbot.hs:3:1: error:
    Could not find module ‘System.Random’
    Use -v to see a list of the files searched for.
  |
3 | import System.Random
  | ^^^^^^^^^^^^^^^^^^^^

Это очень странно, поскольку это работает для моего друга, который только что установил GHCI и не сделал ничего, кроме меня. Главное отличие в том, что я на windows. Я действительно не понимаю этого и пытался немного погуглить, и многие люди говорят о стеке, но это кажется раздражающим, и это очевидно работает для моего друга без него.

Заранее спасибо

РЕДАКТИРОВАТЬ проблема решена. Мне нужно было обновить cabal, затем я запустил установку cabal случайно, и она работала хорошо. Спасибо всем за помощь!

Ответы [ 2 ]

4 голосов
/ 06 апреля 2020

Если вы используете версию cabal-install > = 3.0 (проверьте с помощью cabal --version), то вместо создания пакета cabal вы можете перейти в пустую папку и введите :

cabal install --lib --package-env . random

Это создаст .gh c .environment файл в папке. ghci сеансы, запущенные внутри этой папки, подберут ее, и они смогут import System.Random.

Если это работает правильно, вы можете захотеть установить «random» глобально, чтобы любой вызов ghci мог использовать его:

cabal install --lib random

Это создает / изменяет файл глобальной среды расположен по адресу ~/.ghc/$ARCH-$OS-$GHCVER/environments/default.

1 голос
/ 06 апреля 2020

Модуль System.Random является частью пакета random , а не пакета base. Таким образом, вы должны установить его. Например, если вы используете cabal, вы можете установить его с cabal install random.

Если вы используете, например, стек Haskell, вы можете добавить его в файл package-name.cabal:

  -- …
  build-depends:
      base >=4.7 && <5
    , <b>random >=1.0 && <2</b>
...