2016-01-24 3 views
3

Я хочу создать среду для учебных программ для Haskell, так как я хочу попробовать и изучить язык. Поэтому я прочитал о Cabal и уже получил его на своей машине, потому что иногда обновлял pandoc. Я последовал за некоторые tutorials, которые утверждают, что вы должны запустить:Как создать песочницу Cabal

$ cabal sandbox init 
$ cabal install --only-dependencies 
$ cabal build 

Чтобы среда настройки. Однако, если я стараюсь так, я получаю следующее сообщение:

$ cabal sandbox init 
Writing a default package environment file to 
/home/xiaolong/development/Haskell/cabal.sandbox.config 
Using an existing sandbox located at 
/home/xiaolong/development/Haskell/.cabal-sandbox 

(Выход из ls команды)

$ ls 
cabal.sandbox.config 

И потом:

$ cabal install --only-dependencies 
cabal: Error reading local package. 
Couldn't find .cabal file in: . 

Ха? Внезапно должен быть файл .cabal? Это озадачивает меня. Какие шаги я должен предпринять, чтобы получить среду, в которой я могу просто установить пакеты, а затем использовать эту среду для запуска кода любых учебников, которые я выбираю?

This - это еще один учебник, предлагающий описанный рабочий процесс. Что-то там у меня пропало.

(У меня создается впечатление, что песочницы cabal сопоставимы с виртуальными виртуальными машинами python, будучи полезными на этом пути, что не нужно устанавливать пакеты по всей системе, но вместо этого можно установить их в каталог, а затем использовать эта среда для запуска программ.)

+0

У вас должен быть внутри него файл-кабала. Вы можете создать его, выполнив команду 'cabal init' и выполнив следующие шаги. Вы можете перечислить свои зависимости пакета в поле с именем 'build-depends' в файле cabal. – Sibi

+0

@Sibi Но я уже запускал 'cabal sandbox init'. Это не то же самое, что 'cabal init'? В шагах по этому учебнику не упоминается 'cabal init' - я попробую! Ха, это сработало! Не могли бы вы ответить на этот вопрос? – Zelphir

+0

Вы можете установить отдельные пакеты с помощью 'cabal --require-sandbox install ' в песочницу (при условии, что вы находитесь в правильной директории). Затем вы можете получить к ним доступ без кабального файла, используя 'cabal -require-sandbox repl'. Часть '--require-sandbox' может не всегда понадобиться, но если у вас нет файла .cabal, это ваша самая безопасная ставка. Очевидно, что '-dependencies' * не может * работать без файла .cabal - какие зависимости он должен искать? Я думаю, что для этого требуется довольно недавняя версия cabal. Вы не нуждаетесь в файле .cabal - его гораздо проще иметь. – user2407038

ответ

3

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

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

Вас также может заинтересовать Stack, который является другим альтернативным (лучше, если вы спросите меня :)) инструментом для разработки проектов Haskell.