Как использовать -v, чтобы увидеть список файлов, которые искали в стеке Haskell - PullRequest
1 голос
/ 08 апреля 2019

У меня есть некоторый код на 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 разумным?

Ответы [ 2 ]

3 голосов
/ 08 апреля 2019

Предполагая, что вы запустили GHCi с stack ghci, вы можете передать параметр -v с stack ghci --ghc-options -v.

Стек передает GHC список папок, в которые стек устанавливает пакеты, и где GHC, следовательно, должен искать модули Haskell.Поэтому, чтобы получить полезный вывод от GHC, обычно необходимо вызывать его через stack, как указано выше.Ситуация аналогична для cabal и других инструментов сборки.

0 голосов
/ 08 апреля 2019

Похоже, вы пытаетесь назвать это из прелюдии. На самом деле это команда для самого компилятора, поэтому, если вы открываете свой терминал / консоль, попробуйте запустить ghc -v. (Я предполагал, что вы используете GHC, так как вы отметили свой вопрос .)

...