организовать пакет haskell между несколькими файлами - PullRequest
2 голосов
/ 16 января 2011

опять полный вопрос от новичка о Хаскеле и Леске.

(Во-первых, субъективный комплимент для любителей Haskell: при каждом возвращении на учебную сессию Haskell мне нравится все больше и больше. Я надеюсь, что это будет продолжаться долго :-). Последнее удовольствие - сахар Лески за автоматическое преобразование символов в математику. Это делает код выглядит действительно красиво. Но это не главное ...)

Я хотел организовать свой пакет для учащихся в несколько файлов. Но мне не удалось добавить второй файл, например Second.hs, содержащий другие определения, для моего текущего модуля сборки пакета. Я добавил это в Лесках / Редактировать пакет / Дополнительные файлы. Но это не похоже на работу. Более того, я чувствую, что добавлять каждый новый файл таким образом (через Леску / Редактировать пакет / Дополнительные файлы) было немного неудобно.

В любом случае, в результате все, что построено, - это только содержимое моего Main.hs. Наверняка мне не хватает какого-то пункта?!

Другой вопрос в том, что в C ++ я интенсивно использую namespace, чтобы отсортировать определения моего объекта по предмету / цели. Что эквивалентно пространству имен в Haskell? Модуль? Упаковка ?

1 Ответ

3 голосов
/ 16 января 2011

По поводу лексах: вы можете добавить новый модуль через панель браузера. Просто щелкните правой кнопкой мыши и выберите «Добавить модуль» из контекстного меню (Примечание: введите имя модуля, но не имя файла в диалоговом окне). Добавление модулей из редактора пакетов предназначено просто для добавления существующего модуля в файл cabal. (Если вы не знаете, что означает «клика», тогда самое время его погуглить :))

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

import Module1
import qualified Modile2
import Module3 as M3
import qualified Modile4 as M4

Пакет эквивалентен скомпилированной библиотеке в C / C ++.

...