Я новичок Haskell, и я пытаюсь заставить пакет wai работать (потому что я заинтересован в использовании Haskell для веб-приложений). Я пытался начать с первым, простейшим примером из wai домашних страницы:Haskell: проблема с простейшим примером wai
[ 1] {-# LANGUAGE OverloadedStrings #-}
[ 2] import Network.Wai
[ 3] import Network.Wai.Enumerator (fromLBS)
[ 4] import Network.Wai.Handler.SimpleServer (run)
[ 5]
[ 6] app :: Application
[ 7] app _ = return Response
[ 8] { status = status200
[ 9] , responseHeaders = [("Content-Type", "text/plain")]
[10] , responseBody = ResponseLBS "Hello, Web!"
[11] }
[12]
[13] main :: IO()
[14] main = do
[15] putStrLn $ "http://localhost:8080/"
[16] run 8080 app
Когда я запускаю код, указанным выше (с runhaskell), я получаю следующее сообщение об ошибке:
wapp.hs: 10: 36 : Нет экземпляра для (Data.String.IsString Data.ByteString.Lazy.Internal.ByteString) , возникающие из буквального `«в wapp.hs "Hello, Web!": 10: 36-48
Возможные fix: добавить объявление экземпляра для (данные .String.IsString Data.ByteString.Lazy.Internal.ByteString)
В первом аргументе ResponseLBS', namely
"Здравствуйте, Web!" '
В `responseBody' поле записи
В первый аргумент `возвращения», а именно
`Response
{status = status200,
responseHeaders = [("Content-Type", "text/plain")],
responseBody = ResponseLBS "Hello, Web!"}'
является ли это что-то не так с примером (я не думаю, что это так, потому что это от Wai домашней страницы - это должно быть правильно!), или что-то неправильно с моей системой Haskell?
Я использую ghc. Я пробовал это, но я получаю следующее сообщение об ошибке: wapp.hs: 12: 26: не могли соответствовать предполагаемый тип 'CIByteString ' против предполагаемого типа' [Char] Ожидаемый тип: ResponseHeader Inferred Тип: [Char] В выражении: "Content-Type" В выражении: ("Content-Type", B8.pack "текст/обычный") – TPJ