web-routes不同的返回类型

时间:2012-06-24 15:55:08

标签: haskell happstack

完成happstack-lite tutorial

我们构建返回类型为ServerPart Reponse的函数:

homePage :: ServerPart Response

但是,在web-routes crash course中,我们的函数将签名更改为以下内容:

homePage :: RouteT Sitemap (ServerPartT IO) Response

我们之前没有ServerPart,而不是ServerPartT? 此外,是否有更简单的方法切换到Web路由,而不更改每个方法的类型签名?

1 个答案:

答案 0 :(得分:3)

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

  

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

不是真的。我想尽早为“处理程序”定义自己的类型,然后我可以改变它的定义。例如,type Handler = ServerPart ResponsehomePage :: Handler,然后当我添加网络路径时,我只需重新定义处理程序type Handler = RouteT Sitemap (ServerPartT IO) Response

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

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