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 函数来完成这项工作。为什么其他人不必这样做?有自动转换功能吗?
答案 0 :(得分:5)
对于字符串 literal ,即对于在引号"..."
之间明确给出的字符串,例如您的"application/json"
,有一个“自动转换”。
要打开它,您需要扩展OverloadedStrings
。
其他字符串表达式(例如String
类型的变量,函数的返回值等)将不会自动转换。