使用快照中的阅读器monad(或快照中的monad变换器)

teh*_*ter 4 monads haskell monad-transformers haskell-snap-framework

有人可以展示如何在阅读器monad中使用snap monad吗?Monad变形金刚迷惑我.(或者,我很乐意接受有关monad变换器的教程的建议,以及查看光线的方法,并最终了解它们.)

编辑:糟糕; 忘了说明我实际上要做的事情,而不是寻求特定事情的帮助.战略,而不是战术.我特别希望在所有处理程序之间共享数据库连接/池,而不必在指定路由时显式传递该数据库连接/池.似乎读者monad将是实现这一目标的方法.

Vag*_*rdi 5

Snap具有ApplicationState类型,允许您打包所需的任何应用程序范围的资源(数据库连接,模板引擎等)

它位于生成的文件Application.hs中,默认情况下将HeistState和TimerState包含在ApplicationState中.您可以将数据库连接放在那里,它可以在Snap应用程序的任何位置使用.