Вопрос

В Test.hs у меня есть:

doubleMe x = x + x

В GHCI я нахожу:

Prelude> :l test
[1 of 1] Compiling Main             ( test.hs, interpreted )
Ok, modules loaded: Main.
*Main> doubleMe 9

<interactive>:1:0: Not in scope: `doubleMe'
*Main> 

Почему? Как исправить?

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

Решение

Вы уверены, что вы загружаете правильный Test.hs? Может быть, вы в неверном каталоге. Или, может быть, вы не сохранили Test.hs после добавления определения дублемы.

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

Я предполагаю, что вы определили основную функцию в исходном файле.

Если вы определили main Функция, загрузка модуля с :l test не будет импортировать никаких функций, но main. Отказ В этом случае вы можете загрузить его, добавив Asterix к имени модуля: :l *testОтказ Причина в том, что скомпилированная бинар будет скрывать не экспортируемые функции верхнего уровня. Подготовка Asterix заставляет GHCI игнорировать предварительнокомдационный модуль (тест) и вместо этого интерпретирую исходный файл (TEST.HS).

[jkramer/sgi5k:.../haskell]# cat test.hs 

main = do
    print $ doubleMe 2

doubleMe x = x + x

[jkramer/sgi5k:.../haskell]# ghc --make test
[jkramer/sgi5k:.../haskell]# ghci
[...some messages...]
>> :l test
Ok, modules loaded: Main.
>> :t doubleMe

<interactive>:1:0: Not in scope: `doubleMe'
>> :l *test
[1 of 1] Compiling Main             ( test.hs, interpreted )
Ok, modules loaded: Main.
>> :t doubleMe
doubleMe :: (Num a) => a -> a

Проверьте эти ссылки для получения дополнительной информации:

http://www.haskell.org/ghc/docs/6.12.2/html/users_guide/ghci-compiled.html. http://www.haskell.org/ghc/docs/6.12.2/html/users_guide/interactive-evaluation.html#ghci-scope

  1. Удалить test.hi и test.o из каталога, а затем попробуйте ghci test. Отказ [Иногда, когда я бегу ghc file.hs (и не ghc --make file.hs) дает неопределенную ссылочную ошибку, но создает такие файлы, которые читаются ghci позже. Может быть, это ошибка.

  2. Пытаться

    :cd "<path to your file>"
    :l test
    :browse
    

    в ГХCИ. Что в итоге?

Это произошло со мной тоже - и если кто-то еще бежит в него и спотыкается через эту страницу, моя проблема заключалась в том, что VM я работал GHCI, был вне дискового пространства - побуждая его попробовать и загрузить пустой файл каждый раз.

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