Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Haskell web路由不同的返回类型_Haskell_Happstack - Fatal编程技术网

Haskell web路由不同的返回类型

Haskell web路由不同的返回类型,haskell,happstack,Haskell,Happstack,经历: 我们构建的函数的返回类型为ServerPart-response: homePage :: ServerPart Response 但是,在中,我们的函数将签名更改为以下内容: homePage :: RouteT Sitemap (ServerPartT IO) Response 我们以前不是有服务器部件,而不是服务器部件吗? 另外,是否有一种更简单的方法可以切换到web路由,而无需更改每个方法的类型签名?ServerPart仅定义为type ServerPart a=Server

经历:

我们构建的函数的返回类型为
ServerPart-response

homePage :: ServerPart Response
但是,在中,我们的函数将签名更改为以下内容:

homePage :: RouteT Sitemap (ServerPartT IO) Response
我们以前不是有服务器部件,而不是服务器部件吗?
另外,是否有一种更简单的方法可以切换到web路由,而无需更改每个方法的类型签名?

ServerPart
仅定义为
type ServerPart a=ServerPartT IO a
。在hapstack 8中,我们可能会将其更改为
type ServerPart=ServerPartT IO
,这意味着我们可以编写类似
RouteT Sitemap ServerPart Response
的类型,但在此之前,我们必须直接使用
ServerPartT
,因为类型同义词不能“部分应用”。但是,它们是相同的类型。也就是说,
serverpartresponse
只是
ServerPartT IO Response
的别名

另外,是否有更简单的方法切换到web路由,而不更改每个方法的类型签名

不是真的。我喜欢在早期为“处理程序”定义自己的类型,然后我可以更改它的定义。例如,
type Handler=ServerPart Response
homePage::Handler
,然后在添加web路由时,我只需重新定义Handler
type Handler=RouteT Sitemap(ServerPartT IO)Response

您的编辑器可能具有搜索和替换功能,例如在Vim中:

:%s/:: ServerPart Response/:: RouteT Sitemap (ServerPartT IO) Response/g

ServerPart
仅定义为
type ServerPart a=ServerPartT IO a
。在hapstack 8中,我们可能会将其更改为
type ServerPart=ServerPartT IO
,这意味着我们可以编写类似
RouteT Sitemap ServerPart Response
的类型,但在此之前,我们必须直接使用
ServerPartT
,因为类型同义词不能“部分应用”。但是,它们是相同的类型。也就是说,
serverpartresponse
只是
ServerPartT IO Response
的别名

另外,是否有更简单的方法切换到web路由,而不更改每个方法的类型签名

不是真的。我喜欢在早期为“处理程序”定义自己的类型,然后我可以更改它的定义。例如,
type Handler=ServerPart Response
homePage::Handler
,然后在添加web路由时,我只需重新定义Handler
type Handler=RouteT Sitemap(ServerPartT IO)Response

您的编辑器可能具有搜索和替换功能,例如在Vim中:

:%s/:: ServerPart Response/:: RouteT Sitemap (ServerPartT IO) Response/g