Я предполагаю, что я отчасти нашел ответ сам:
:java
команды в командной строке показывает сгенерированный код. Внутри этого кода видно, что скомпилированный модуль автоматически импортируется, поэтому нам не нужно ссылаться на него.
Теперь, если мы возьмем пример HelloWorld из РЕПЛ, он просто выполняется путем ввода
frege> main
в левое окно.
Дирк использует для своих примеров с синтаксисом
main _ = do
Если мы теперь типа
frege> main
мы только получаем
:: a -> IO()
как выход. Но если мы наберем
frege> main "something"
repl дает ожидаемый результат. Хотя я до сих пор не знаю, что происходит, это помогает мне с моими следующими шагами :-)
Действительно! Для совместимости с Java «main» может быть объявлен как «[String] -> IO()», и для совместимости с Haskell это может быть просто «IO()». В зависимости от того, что вы называете основным. – Ingo
Чтобы избежать путаницы, соблюдайте следующее: 1.) Используйте разные имена модулей каждый раз или используйте команду ': reset', чтобы очистить старые файлы. 2.) Не используйте имена неквалифицированных модулей, с ними могут возникнуть некоторые проблемы (из-за ограничений JVM). – Ingo
У вас это абсолютно правильно. Модули и определения загружаются автоматически в REPL слева (на самом деле оба они используют один и тот же сеанс). Кнопка «Запустить» определенно упростит работу модулей. –