Haskell 应为类型,但‘;请求’;有种‘;*-&燃气轮机*’;

Haskell 应为类型,但‘;请求’;有种‘;*-&燃气轮机*’;,haskell,Haskell,我编写了简单的hello world server(http),并将请求处理程序的类型声明为 type RequestHandler = Request -> IO Response 它抛出的错误是 simpleserver.hs:11:23: Expecting one more argument to ‘Request’ Expected a type, but ‘Request’ has kind ‘* -> *’ In the type ‘Reque

我编写了简单的hello world server(http),并将请求处理程序的类型声明为

type RequestHandler = Request -> IO Response
它抛出的错误是

simpleserver.hs:11:23:
    Expecting one more argument to ‘Request’
    Expected a type, but ‘Request’ has kind ‘* -> *’
    In the type ‘Request -> IO Response’
    In the type declaration for ‘RequestHandler’

这个错误消息对我来说毫无意义

为什么会抛出此错误以及如何修复此错误?

请求的类型:它需要一个类型参数,用于确定如何处理http请求体。这正是错误消息告诉您的:haskell期望
Request
有一个参数,而您给了它零。

以泛型类型的形式附加了数据(
Request a
中的
a
表示请求主体)-这意味着Haskell告诉您,
请求
具有种类
*->*

因此,您基本上必须修复它-或者考虑一个固定类型并添加它:

type RequestHandler = Request String -> IO Response
已经有了这方面的类型(例如,您可以说:

type RequestHandler = Request_String -> IO Response
也是。或者将处理程序设置为通用:

type RequestHandler a = Request a -> IO Response
当然,您还必须更改一些其他函数/定义(例如
helloWorldHandler