2014-12-25 3 views
5

Я не могу понять, как получить WinGHCi для загрузки и компиляции моего файла .hs.Получение исходных файлов для запуска в программировании Haskell (WinGHCi)

У меня есть файл, C:\Users\Haskell\Source\hello.hs, который содержит только следующую строку:

main = putStrLn "Hello, world!" 

Если на Prelude> строке, я бегу

:cd C:\Users\Haskell\Source\ 

ничего не происходит, что я средства при условии, команда была успешной. Однако, когда я пытаюсь запустить

:load hello.hs 

я получаю "[1 из 1] Компиляция Main Ok, модули загружены:. Основное" сообщение. Моя подсказка затем переходит из «Прелюдии» на «* Main» и я типа:

ghc -o hello hello.hs 

После этого, я буду получать ряд ошибок говорить о том, как GHC, о, привет, привет, и ГВ «Не в области."

Я в правильном каталоге. Почему моя программа не будет работать?

Одна из моих проблем заключается в том, что я не могу перемещаться по каталогам. Я знаю, что :!dir перечисляет файлы, и я в нужном каталоге, но :load hello.hs все еще не работает, и я продолжаю получать ошибку области.

Любая помощь будет оценена по достоинству.

EDIT: пользователь указал, что если я получил приглашение * Main, моя программа была загружена и скомпилирована, и мне не нужно запускать команду ghc. Если это так, как мне его запустить? Haskell.org утверждает, что «вы можете запустить исполняемый файл (./hello в системах Unix, hello.exe в Windows)», но exe не был создан.

+1

Я думаю, что GHCi успешно загрузил исходный файл и выпустил ошибку, потому что в исходном файле есть ошибка. Это поможет, если вы разместите hello.hs. – snak

+0

Содержимое hello.hs есть, main = putStrLn «Привет, мир!» –

+1

@JoffreyBaratheon Я добавил информацию из вашего последнего комментария в ваш вопрос. В будущем нажмите «изменить» под своим вопросом, чтобы отредактировать свой вопрос и добавить такую ​​информацию самостоятельно. У вас будет больше шансов получить хороший ответ, если вы зададите свои вопросы самостоятельно. – Jubobs

ответ

4

Мне легче сначала перейти к каталогу, а затем вызвать ghci. В Prelude вы можете использовать :l и имя файла.

Или вы можете загрузить ghci, а затем использовать :l и использовать полный путь к файлу.

Редактировать: После прочтения ваших изменений ясно, что вы скомпилировали свой код в порядке. Как только он говорит, что он скомпилирован, нет причин повторять это снова с ghc (я не думаю, что вы можете сделать это с ghci в любом случае).

Теперь, когда он скомпилирован, вы можете использовать любой из типов кода и данных, определенных там. Таким образом, чтобы использовать основную функцию, просто введите main в командной строке *Main>.

+0

Итак, я сделал то, что вы сказали о навигации к исходному файлу в cmd, а затем загрузите ghci. Я делаю: Prelude>: l hello.hs , а затем * Главная> ghc -o hello hello.hs И я все еще получаю не в сфере. –

+0

Когда он переключает запрос на 'Main', это означает, что ваш файл загружен и скомпилирован. Поэтому не нужно пытаться выполнить 'ghc'. Просто используйте функции и типы данных, определенные в вашем файле. –

+0

Если вы говорите, что он уже скомпилирован, как мне его запустить? Haskell.org говорит: «Затем вы можете запустить исполняемый файл (./hello в системах Unix, hello.exe в Windows)». Если я нахожу hello.exe, это не сработает. Я чувствую себя действительно немым прямо сейчас. –

Смежные вопросы