2016-10-22 2 views
3

Я изучаю Haskell и пытаюсь настроить среду разработки Emacs (чтение this).
Одна из вещей, которую я должен сделать, это установить hindent.
Рекомендуемый метод here всего лишь stack install hindent. Я предполагаю, что он должен быть установлен в стеке global-project. Мой глобальный стек YAML на $HOME/.stack/global-project/stack.yaml является:Сбой при базовом использовании стека haskell

flags: {} 
extra-package-dbs: [] 
packages: [] 
extra-deps: [] 
resolver: ghc-7.10.3 

Я не использую любую систему ghc (нет ghc или ghci на моем $PATH).
На stack install hindent он посоветовал мне продлить extra-deps:

Run from outside a project, using implicit global project config 
Using resolver: ghc-7.10.3 from implicit global project's config file: /home/me/.stack/global-project/stack.yaml 

While constructing the build plan, the following exceptions were encountered: 

In the dependencies for hindent-5.2.1: 
    descriptive must match >=0.7 && <0.10, but the stack configuration has no specified version 
       (latest applicable is 0.9.4) 
    exceptions must match -any, but the stack configuration has no specified version (latest applicable is 0.8.3) 
    haskell-src-exts must match >=1.18, but the stack configuration has no specified version 
        (latest applicable is 1.18.2) 
    monad-loops must match -any, but the stack configuration has no specified version (latest applicable is 0.4.3) 
    mtl must match -any, but the stack configuration has no specified version (latest applicable is 2.2.1) 
    path must match -any, but the stack configuration has no specified version (latest applicable is 0.5.9) 
    path-io must match -any, but the stack configuration has no specified version (latest applicable is 1.2.0) 
    text must match -any, but the stack configuration has no specified version (latest applicable is 1.2.2.1) 
    unix-compat must match -any, but the stack configuration has no specified version (latest applicable is 0.4.2.0) 
    utf8-string must match -any, but the stack configuration has no specified version (latest applicable is 1.0.1.1) 
    yaml must match -any, but the stack configuration has no specified version (latest applicable is 0.8.20) 

Recommended action: try adding the following to your extra-deps in /home/me/.stack/global-project/stack.yaml: 
- descriptive-0.9.4 
- exceptions-0.8.3 
- haskell-src-exts-1.18.2 
- monad-loops-0.4.3 
- mtl-2.2.1 
- path-0.5.9 
- path-io-1.2.0 
- text-1.2.2.1 
- unix-compat-0.4.2.0 
- utf8-string-1.0.1.1 
- yaml-0.8.20 

Когда я делаю то, что предлагается это предлагает некоторую новую зависимость (которые, вероятно, зависимости от тех, которые добавляются раньше) и т.д. В конце концов, это приводит к situatuation где некоторые две зависимости имеют неудовлетворенные версии.

Я предполагаю, что что-то не так с моей конфигурацией (или пониманием стека), поскольку я думаю, что получение неявных зависимостей - это работа инструмента построения.

Может ли кто-нибудь более опытный понять, что такое моя новичка?

+2

Есть ли какая-то особая причина, почему резолвер в вашем глобальном проекте «ghc-7.10.3»? (Я думаю, что это может быть источником вашей проблемы.) – duplode

ответ

4

Как правило, рекомендуется использовать версию ghc в качестве преобразователя по той причине, что вы обнаружили: вам нужно вручную указать множество версий пакетов. Вместо этого я бы рекомендовал переключиться на lts-6.23 или что-то еще подобное.

+0

Спасибо. Это имеет смысл, но немного отличается от стандартных инструментов сборки в других экосистемах, которые я видел до сих пор. версия 'hindent', установленная через' lts-6.23' или даже 'lts-7.5', - это версия <5, но мне нужно 5>. Я перешел на ночь, чтобы получить то, что мне нужно. Является ли моя причина правильной в соответствии с философией стека, или я должен где-то указать конкретную версию одного пакета («hindent')? – foki

+1

Вы можете попробовать указать версию hindent в командной строке, но выбор ночного снимка с нужной версией - хороший вызов. –

0

Не уверен. Если вы просто хотите быстро двигаться:

stack upgrade --git && \ 
rm -rf ~/.stack  && \ 
stack setup   && \ 
stack install hindent 

Почему бы не использовать GHC 8.X и новый новый стек? ;)

Смежные вопросы