Я пытаюсь начать писать веб-приложение в Scotty, но при попытке запустить сервер я получаю конфликт зависимости. Вот мой код:Конфликт зависимости Haskell
{-# LANGUAGE OverloadedStrings #-}
module Site where
import Web.Scotty
import Control.Monad.IO.Class
import qualified Data.Text.Lazy.IO as T
-- Controllers
indexController :: ActionM()
indexController = do
index <- liftIO $ T.readFile "public/index.html"
html index
routes :: ScottyM()
routes = do
get "/" indexController
main :: IO()
main = do
scotty 9901 routes
Когда я запускаю его с помощью runhaskell Site.hs
, я получаю следующее сообщение об ошибке:
Site.hs:12:10:
Couldn't match expected type `text-0.11.2.3:Data.Text.Lazy.Internal.Text'
with actual type `Data.Text.Lazy.Internal.Text'
In the first argument of `html', namely `index'
In a stmt of a 'do' block: html index
In the expression:
do { index <- liftIO $ T.readFile "public/index.html";
html index }
Используя cabal list text
, он говорит мне, что версии 0.11.2.3
и 0.11.3.1
установлены, но 0.11.3.1
по умолчанию , Скотти scotty.cabal
указывает, что пакет text
должен быть >= 0.11.2.3
, который мне кажется, что приведенный выше код должен работать. Существуют ли какие-либо обходные пути для такого рода ошибок?
Awesome! Есть ли способ установить пакет по умолчанию во всем мире? – nahiluhmot
Нет, не совсем. По умолчанию используется новейшая версия (как указано наивысшей версией) версии пакета. Вы можете скрыть версию, которую вы не хотите использовать, 'ghc-pkg hide foo-0.1.2.3', а затем GHC не будет использовать эту версию, если вы явно не указали ее. Таким образом, скрытие всех новых версий делает некоторые версии по умолчанию. –