是否存在从String到ByteString的自动转换?

时间:2018-10-05 11:57:44

标签: haskell

addRequestHeader (H.hContentType, "application/json")

这是使用Network.HTTP.Simple包的一个示例,我已经看过几次了。将字符串作为签名传递给该函数的工作原理是:

addRequestHeader :: Network.HTTP.Types.Header.HeaderName
 -> Data.ByteString.Internal.ByteString -> Request -> Request

当我尝试此操作时,出现错误无法将预期类型'C8.ByteString'与实际类型'[Char]'匹配,因此我必须使用 Data.ByteString .Char8.pack 函数来完成这项工作。为什么其他人不必这样做?有自动转换功能吗?

1 个答案:

答案 0 :(得分:5)

对于字符串 literal ,即对于在引号"..."之间明确给出的字符串,例如您的"application/json",有一个“自动转换”。

要打开它,您需要扩展OverloadedStrings

其他字符串表达式(例如String类型的变量,函数的返回值等)将不会自动转换。