Где я могу сохранить мои "модули" на Haskell? - PullRequest
5 голосов
/ 28 октября 2011

Я поместил некоторые функции в файл.Где на моем ПК я должен сохранить этот файл, чтобы я мог легко загрузить свои функции?

Я использую платформу Haskell на 64-разрядном компьютере под управлением Windows.

Ответы [ 2 ]

9 голосов
/ 28 октября 2011

Я обычно помещаю свои модули в одно и то же дерево каталогов и запускаю ghci в корневом каталоге дерева. Затем модули могут импортировать друг друга, и я могу легко :load модули в ghci в интерактивном режиме.

$ ghci

.... loading ....

Prelude> :load directory/subdirectory/mymodule.hs
2 голосов
/ 31 октября 2011

Если вы хотите, чтобы ваши модули были доступны из нескольких разных проектов, я бы порекомендовал создать для них пакет cabal и установить его, используя cabal install. Публикация в hackage не требуется - cabal install без аргументов ищет файл .cabal в текущем каталоге и устанавливает соответствующий пакет.

Если вы хотите, чтобы ваши модули были доступны из одного проекта - обычная практика организации ваших источников в иерархическом дереве папок применима и к Haskell. Позвольте мне показать пример:

Hello/World.hs
Foo/Bar.hs
Quux.hs
Hello.hs

Hello/World.hs должно иметь module Hello.World where в заголовке. Основной модуль должен иметь module Main, но реальное имя файла может быть любым (например, Quux.hs). В Foo/Bar.hs вы можете использовать import Hello.World. Когда вы загружаете Foo/Bar.hs в ghci, текущий каталог должен быть корнем вашего дерева, иначе он не найдет Hello.World. Вы можете передать имена модулей вместо имен файлов в ghci: например, ghci Hello.World будет работать.

Вот документация:

http://haskell.org/ghc/docs/latest/html/users_guide/separate-compilation.html

http://haskell.org/ghc/docs/latest/html/users_guide/packages.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...