无法将预期类型“Request”与实际类型“[Char]”相匹配
Couldn't match expected type ‘Request’ with actual type ‘[Char]’
我是 Haskel 的新手,我正在尝试 运行 使用 http-conduit
的简单示例,该示例是他们 documentation.[=19= 中提供的示例]
但是,当 运行 运行程序时,我总是得到:
• Couldn't match expected type ‘Request’ with actual type ‘[Char]’
• In the first argument of ‘httpLBS’, namely
‘"http://httpbin.org/get"’
In a stmt of a 'do' block:
response <- httpLBS "http://httpbin.org/get"
In the expression:
do response <- httpLBS "http://httpbin.org/get"
putStrLn
$ "The status code was: " ++ show (getResponseStatusCode response)
print $ getResponseHeader "Content-Type" response
L8.putStrLn $ getResponseBody response
|
12 | response <- httpLBS "http://httpbin.org/get"
| ^^^^^^^^^^^^^^^^^^^^^^^^
我尝试用 cabal 和 stack 创建一个项目,添加 http-conduit
和 aeson
作为依赖项,但仍然出现错误。
不应该将 url 隐式转换为 Request
吗?
我尝试导入 Request
并尝试从 url 创建一个 Request
,但它抱怨:
import Network.HTTP.Client.Request
<no location info>: error:
Could not load module ‘Network.HTTP.Client.Request’
it is a hidden module in the package ‘http-client-0.6.4.1’
您需要启用 OverloadedStrings
extension [schoolofhaskell]。您可以将 LANGUAGE
pragma 添加到文件顶部,因此:
{-# <b>LANGUAGE OverloadedStrings</b> #-}
-- …
此扩展将隐式添加 fromString :: IsString a => String -> a
to each string literal (not to be confused with an expression with type String
). It makes it more convenient to work with string-like data such as for example Text
。
但是请注意,转换是在 运行时 完成的,因此如果不是所有 String
都映射到(有效的)Request
对象,那么您只有在评估 Request
时才会看到它。
Shouldn't the url be implicitly converted to a Request?
在Haskell中,没有隐式转换,您总是通过函数转换数据。 OverloadedStrings
只是向 文字 添加了一个隐式函数调用,因此这意味着字符串文字现在可以采用属于 [=24 的任何类型的类型=].
我是 Haskel 的新手,我正在尝试 运行 使用 http-conduit
的简单示例,该示例是他们 documentation.[=19= 中提供的示例]
但是,当 运行 运行程序时,我总是得到:
• Couldn't match expected type ‘Request’ with actual type ‘[Char]’
• In the first argument of ‘httpLBS’, namely
‘"http://httpbin.org/get"’
In a stmt of a 'do' block:
response <- httpLBS "http://httpbin.org/get"
In the expression:
do response <- httpLBS "http://httpbin.org/get"
putStrLn
$ "The status code was: " ++ show (getResponseStatusCode response)
print $ getResponseHeader "Content-Type" response
L8.putStrLn $ getResponseBody response
|
12 | response <- httpLBS "http://httpbin.org/get"
| ^^^^^^^^^^^^^^^^^^^^^^^^
我尝试用 cabal 和 stack 创建一个项目,添加 http-conduit
和 aeson
作为依赖项,但仍然出现错误。
不应该将 url 隐式转换为 Request
吗?
我尝试导入 Request
并尝试从 url 创建一个 Request
,但它抱怨:
import Network.HTTP.Client.Request
<no location info>: error:
Could not load module ‘Network.HTTP.Client.Request’
it is a hidden module in the package ‘http-client-0.6.4.1’
您需要启用 OverloadedStrings
extension [schoolofhaskell]。您可以将 LANGUAGE
pragma 添加到文件顶部,因此:
{-# <b>LANGUAGE OverloadedStrings</b> #-}
-- …
此扩展将隐式添加 fromString :: IsString a => String -> a
to each string literal (not to be confused with an expression with type String
). It makes it more convenient to work with string-like data such as for example Text
。
但是请注意,转换是在 运行时 完成的,因此如果不是所有 String
都映射到(有效的)Request
对象,那么您只有在评估 Request
时才会看到它。
Shouldn't the url be implicitly converted to a Request?
在Haskell中,没有隐式转换,您总是通过函数转换数据。 OverloadedStrings
只是向 文字 添加了一个隐式函数调用,因此这意味着字符串文字现在可以采用属于 [=24 的任何类型的类型=].