Указание имени пакета для команд, связанных с модулем, в GHCI

StackOverflow https://stackoverflow.com/questions/3918774

  •  29-09-2019
  •  | 
  •  

Вопрос

Есть ли способ указать имя пакета для модуля для :browse, :load или :module Команды в GHCI (версия 6.12.1)?

Некоторые имена модулей неоднозначны:

Prelude> :module Control.Monad.Cont

<no location info>:
    Ambiguous module name `Control.Monad.Cont':
      it was found in multiple packages: mtl-1.1.0.2 monads-fd-0.1.0.2

Устанавливает -hide-package Вариант Единственное, что я могу сделать, чтобы избежать двусмысленности?

Это было полезно?

Решение

Насколько я знаю, да. Но это не должно иметь большого значения, вы можете сделать это внутри GHCI:

Prelude Data.List> :set -hide-package mtl
package flags have changed, resetting and loading new packages...
Prelude> import Control.Monad.Cont
Prelude Control.Monad.Cont> 

Был также линейный элемент в журнале изменений GHC-7, который заставил меня думать, что импорт пакета будет работать на командной строке, но, похоже, еще не (см. Ниже). В комментарии изменения говорится, что «полный синтаксис импорта, поддерживаемый в GHCI», который, как я полагаю, должен исключить расширения.

$ ghci-7.0.0.20100924 -XPackageImports
GHCi, version 7.0.0.20100924: http://www.haskell.org/ghc/  :? for help
...
Prelude Data.List> import "mtl" Control.Monad.Cont

<no location info>:
    Ambiguous module name `Control.Monad.Cont':
      it was found in multiple packages: mtl-1.1.1.0 monads-fd-0.1.0.2

Другие советы

Устанавливает -hide-package Вариант Единственное, что я могу сделать, чтобы избежать двусмысленности?

Ты можешь использовать ghc-pkg, например

$ ghc-pkg hide monads-fd

Это как настройка -hide-package на каждый последующий ghc вызов. Пакеты явно в зависимости от monads-fd через Cabal не будет затронут, но все остальное. Осторожно!

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top