У меня есть код Haskell ниже.
-- | Determine the prime factors of a given positive integer.
module P36 where
import Data.List
import Data.Numbers (primeFactors)
prime_factors_mult :: Integer -> [(Integer, Int)]
prime_factors_mult = map encode . group . primeFactors
where encode xs = (head xs, length xs)
Я запускаю его в ghci, он дает мне вывод:
Prelude> :l P36
[1 of 1] Compiling P36 ( P36.hs, interpreted )
P36.hs:5:1: error:
Failed to load interface for ‘Data.Numbers’
Use -v to see a list of the files searched for.
Failed, modules loaded: none.
Я знаю, это потому, что у меня не установлен Data.Numbers
. Я решил это, запустив stack install Numbers
.
Но я не могу понять, что означает Используйте -v, чтобы увидеть список искомых файлов..
Я много гуглю и пробовал использовать :l P36 -v
и stack -v
. Но никто из тех, кто был казнен правильно.
Мой вопрос Как использовать -v для просмотра списка искомых файлов.
----- Обновлять ------
После запуска ghc -v
в консоли отображается
C:\Users\Administrator>ghc -v
Glasgow Haskell Compiler, Version 8.6.3, stage 2 booted by GHC version 8.4.3
Using binary package database: C:\Users\Administrator\AppData\Local\Programs\sta
ck\x86_64-windows\ghc-8.6.3\lib\package.conf.d\package.cache
package flags []
loading package database C:\Users\Administrator\AppData\Local\Programs\stack\x86
_64-windows\ghc-8.6.3\lib\package.conf.d
wired-in package ghc-prim mapped to ghc-prim-0.5.3
wired-in package integer-gmp mapped to integer-gmp-1.0.2.0
wired-in package base mapped to base-4.12.0.0
wired-in package rts mapped to rts
wired-in package template-haskell mapped to template-haskell-2.14.0.0
wired-in package ghc mapped to ghc-8.6.3
*** Deleting temp files:
Deleting:
*** Deleting temp dirs:
Deleting:
ghc: no input files
Usage: For basic information, try the `--help' option.
Но я видел сообщение Ошибка: «Не удалось загрузить интерфейс для Data.Either.Utils». , которое получило результат работы с -v. Это
Using a sandbox located at
/Users/myuser/Desktop/mydirectory/myotherdirectory/.cabal-sandbox
/usr/local/bin/ghc --print-global-package-db
/usr/local/bin/runghc filename.hs
Я проверяю путь C:\Users\Administrator\AppData\Local\Programs\stack\x86
_64-windows\ghc-8.6.3\lib\package.conf.d
и обнаруживаю, что в нем много .conf
файлов.
C:.
array-0.5.3.0.conf
base-4.12.0.0.conf
binary-0.8.6.0.conf
bytestring-0.10.8.2.conf
Cabal-2.4.0.1.conf
containers-0.6.0.1.conf
deepseq-1.4.4.0.conf
directory-1.3.3.0.conf
.....
Это файлы, которые ищет Haskell?
Является ли мой результат с ghc -v
разумным?
Спасибо за ваш совет, я не подумал об этом, потому что Google не дает мне никаких связанных ссылок. Я буду искать его сейчас.
Похоже, вы пытаетесь вызвать его из прелюдии. На самом деле это команда для самого компилятора, поэтому, если вы откроете свой терминал/консоль, попробуйте запустить ghc -v
. (Я предположил, что вы используете GHC, поскольку отметили свой вопрос haskell-стек.)
Спасибо за Ваш ответ. Но после запуска ghc -v
результат сильно отличается от того, что я хочу. Я отредактировал вопрос, не могли бы вы взглянуть на него?
Я не уверен, что понимаю, может быть, cabal
или ghc-pkg
производят то, что вы хотите?
На моей машине кажется нет команды командования. ghc-pkg list
выводит файлы в \package.conf.d
, которые я указал в своем обновлении.
Предполагая, что вы запустили GHCi с помощью stack ghci
, вы можете передать опцию -v
с помощью stack ghci --ghc-options -v
.
Стек передает GHC список папок, в которые стек устанавливает пакеты и где, следовательно, GHC должен искать модули Haskell. Таким образом, чтобы получить полезный вывод от GHC, обычно необходимо вызывать его через stack
, как указано выше. Аналогичная ситуация с cabal
и другими инструментами сборки.
Вы пробовали читать документацию по стеку?