我编写了简单的hello world服务器(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’
此错误消息对我没有意义..
为什么会抛出此错误以及如何解决此问题?
答案 0 :(得分:5)
Request
附加了通用类型形式的数据(a
中的Request a
,它代表请求 - 正文) - 这是指Haskell告诉您Request
种类 * -> *
所以你基本上必须修复它 - 要么想到固定类型并添加它:
type RequestHandler = Request String -> IO Response
此类型已有类型(例如Request_String
,因此您可以说:
type RequestHandler = Request_String -> IO Response
太。或者你使你的处理程序通用:
type RequestHandler a = Request a -> IO Response
当然,您必须更改其他一些功能/定义(例如helloWorldHandler
)。
答案 1 :(得分:2)
Look at Request
的类型:它需要一个类型参数,用于确定如何处理http请求的正文。这正是错误消息告诉你的内容:haskell期望一个参数var image = button.getElementsByTagName("span")[0];
if (isEnabled) {
image.style.color = "#BBB"
else {
image.style.color = "#AAA"
,你给它零。