Я пытаюсь получить код this для компиляции в моей системе. Когда я пытаюсь скомпилировать модуль чата с ghc Chat.hs
, GHC дает мне это:Пример использования Yesod wai-eventsource. Проблема с зависимостью пакета?
Chat.hs:76:39:
Couldn't match expected type `Network.Wai.Request'
with actual type `wai-0.4.3:Network.Wai.Request'
In the second argument of `eventSourceApp', namely `req'
In the second argument of `($)', namely `eventSourceApp chan req'
In a stmt of a 'do' expression:
res <- lift $ eventSourceApp chan req
Я на OS X Snow Leopard и прояснилось (все?), За исключением Haskell Platform, как это:
rm -r ~/.cabal
rm -r ~/.ghc
rm -r ~/Library/Haskell
и установил yesod и wai-eventsource заново из хака.
Насколько я понимаю, ошибка возникает из-за проблемы с зависимостью.
wai
Synopsis: Web Application Interface.
Default available version: 1.0.0
Installed versions: 0.4.3, 1.0.0
Homepage: https://github.com/yesodweb/wai
License: BSD3
Где Йесод-0.9.4.1 требует Wai == 0.4. * И Wai-EventSource-1.0.0 требуется WAI> = 1.0.
Итак, мой вопрос: возможно ли, чтобы этот пример (с официальными выпусками Yesod) работал прямо сейчас? Со всеми изменениями проект Yesod проходит через atm? Должен ли я быть более точным в версиях, которые я пытаюсь установить, и если да, то как?
Edit:
Я уничтожил ~/.ghc
(или на самом деле следовал более строгий подход с учетом here, на всякий случай) и пытался установить пакеты с одним cabal install yesod wai-eventsource
, в результате чего (неполный):
Resolving dependencies...
cabal: cannot configure yesod-0.9.4.1. It requires wai ==0.4.* and warp ==0.4.*
For the dependency on wai ==0.4.* there are these packages: wai-0.4.0,
wai-0.4.1, wai-0.4.2 and wai-0.4.3. However none of them are available.
wai-0.4.0 was excluded because wai-eventsource-1.0.0 requires wai >=1.0
...
wai-0.4.3 was excluded because wai-eventsource-1.0.0 requires wai >=1.0
For the dependency on warp ==0.4.* there are these packages: warp-0.4.0,
warp-0.4.0.1, warp-0.4.1, warp-0.4.1.1, warp-0.4.1.2, warp-0.4.2, warp-0.4.3,
warp-0.4.3.1, warp-0.4.4, warp-0.4.5, warp-0.4.6, warp-0.4.6.1, warp-0.4.6.2
and warp-0.4.6.3. However none of them are available.
warp-0.4.0 was excluded because wai-eventsource-1.0.0 requires warp >=1.0
...
warp-0.4.6.3 was excluded because wai-eventsource-1.0.0 requires warp >=1.0
До этого (с Йесод и вай-EventSource устанавливается отдельно) Я попытался ghc -hide-package wai-1.0.0 Chat.hs
в результате,
Chat.hs:77:39:
Couldn't match expected type `wai-1.0.0:Network.Wai.Request'
with actual type `Network.Wai.Request'
In the second argument of `eventSourceApp', namely `req'
In the second argument of `($)', namely `eventSourceApp chan req'
In a stmt of a 'do' expression:
res <- lift $ eventSourceApp chan req
Как правило, часто рекомендуется устанавливать пакеты, которые должны работать вместе с одной командой 'cabal install', например' cabal install yesod wai-eventsource'. Это заставляет Cabal попытаться выбрать одну версию каждого пакета, чтобы все они работали вместе. При установке отдельно вы иногда устанавливаете несколько версий пакета, вызывая такие проблемы. – hammar