Web 路由不同的返回类型



正在浏览 happstack-lite 教程:

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

homePage :: ServerPart Response

但是,在 Web 路由速成课程中,我们的函数将签名更改为以下内容:

homePage :: RouteT Sitemap (ServerPartT IO) Response

我们以前不是有ServerPart,而不是ServerPartT吗?另外,有没有更简单的方法可以切换到 Web 路由,而无需更改每个方法的类型签名?

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

相关内容

  • 没有找到相关文章

最新更新