haskell 。 WAI 简单 Web 应用程序出现问题(解压字节串)

标签 haskell

对字符串和文本进行了大量的打包、解包等操作,但仍然卡住了, 目标很简单,就像连接额外的请求信息的 hello world 一样:

{-# LANGUAGE OverloadedStrings #-}
import Network.Wai
import Network.Wai.Handler.Warp (run)
import Network.HTTP.Types (statusOK)
import qualified Data.ByteString.Lazy as L
import Data.ByteString.Char8 (unpack)
import qualified Data.Text.Lazy as T

application req = do
  return $ responseLBS statusOK [("Content-Type", "text/plain")]
    $ L.pack $  "Hello World" ++ (unpack $ rawPathInfo req)

main = run 3000 application

产生:

Couldn't match expected type `GHC.Word.Word8'
           against inferred type `Char'
      Expected type: [GHC.Word.Word8]
      Inferred type: [Char]
    In the second argument of `(++)', namely
        `(unpack $ rawPathInfo req)'
    In the second argument of `($)', namely
        `"Hello World" ++ (unpack $ rawPathInfo req)

急切需要提示如何使其工作。

最佳答案

使用 Data.ByteString.Lazy.Char8.pack 而不是 L.pack。

关于 haskell 。 WAI 简单 Web 应用程序出现问题(解压字节串),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7497881/

相关文章:

haskell - `EitherT` 的 Applicative 实例在哪里定义?

parsing - 将字符插入 Haskell 中的解析器组合器字符流

haskell - Haskell 中的评估和空间泄漏

haskell - 是否有适合维护 Cabal Haskell 包的变更日志的工具?

haskell - 使用 Haskell 处理联合按键

haskell - 在 Haskell 中将列表插入二叉树

haskell - 正在解析网络.HTTP 'user error (https not supported)'

haskell - 没有从文字 `1' 产生的 Num String 实例

haskell - 如何生成用于 Network.TLS 的自签名证书

haskell - megaparsec 中的运算符优先级