2015-07-08 4 views
2

Недавно я закончил книгу «learnyouahaskell», и теперь я хотел бы применить свои приобретенные знания, создав приложение Yesod.Haskell Environment

Однако я не уверен, как начать работу.

Кажется, есть два варианта настройки проекта Yesod. Один из них - Stack, а другой - с песочницами.

Но каковы различия (если есть?) И сходство между ними? Учитывается ли она как лучшая практика, а другая - нет?

Дад quickstart предлагает использовать стек, это прекрасно, или я должен использовать cabbox sanbox?

+1

хорошо ... если разработчики * yesod настоятельно рекомендуют один из вариантов, почему вы спрашиваете нас? – Bakuriu

+0

Мне хотелось бы узнать о различиях между ними, и если кто-то сделал другой/лучший опыт с одним из них – Robin

ответ

3

Существует три разных пакета, о которых здесь говорят.

  1. cabal-install является текущим стабильным двоичным кодом для создания приложений.
  2. stack был недавно опубликован для публики. Я считаю, что он пытается заменить cabal-install лучшим и удобным инструментом. По крайней мере, он показывает сообществу Haskell другой способ чего-то.
  3. Cabal - это библиотека, в которой находятся как cabal-install, так и stack.

Что касается различий между первыми двумя инструментами.

cabal-install - зрелая заявка, используемая почти повсеместно в сообществе Haskell (по крайней мере в открытом источнике, я понятия не имею, что делают люди за закрытыми дверями).

stack по-прежнему является новым (по крайней мере общедоступным) приложением, используемым в некоторых новых проектах. Еще немного информации можно найти here. Но некоторые из основных моментов:

  • работает stack build в директории с проектами установит GHC (Haskell компилятора), а также необходимые зависимости для проекта.
  • stack, по умолчанию, работает от stackage. Это кураторская версия hackage. Это означает, что вы можете ожидать, что разные пакеты будут хорошо играть друг с другом. Приведение к воспроизводимым сборкам.
  • Вы все еще можете отказаться от хака, если захотите.

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

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

Примечание: Я до сих пор довольно новичок в Haskell и никогда не использовал stack. Мне на самом деле сказали держаться подальше от него, если ничего не строили в yesod .

Редактировать: Как указано в комментарии по этому вопросу, я считаю, что я неправильно представил то, что люди рассказали мне о стеке. Комментарии, которые мне дали, когда я спросил, нужно ли мне переключаться, чтобы стеки были больше по строкам, Если вам достаточно удобно пользоваться изолированными дескрипторами cabal, нет причин переключаться на стек, если у вас нет проблем.

+0

Мне любопытно, кто говорит, чтобы держаться подальше от стека? Какие причины они дают? Это для меня новость. Кроме того, [это сообщение в блоге сравнения] (https://www.fpcomplete.com/blog/2015/06/why-is-stack-not-cabal) может быть весьма полезным для понимания вещей. –

+1

После повторного чтения моего ответа, я считаю, что я неправильно представил комментарии, которые люди сделали мне относительно использования стека. Я собираюсь внести изменения в свой ответ с объяснением. –

+0

Спасибо, это отношение имеет больше смысла для меня. –

3

Ведущий разработчик Yesod (Michael Snoyman) активно участвует в инструменте Stack. Итак, я бы рекомендовал вам настроить Yesod с помощью Stack. Кроме того, Yesod имеет довольно сложный набор зависимостей и использование Stackage в качестве куратора по умолчанию, очень помогает в процессе установки (по умолчанию Stack позаботится).

Также read this post для понимания различий в стеках из кабины.