Dav*_*vid 7 haskell functional-programming happstack
我正在尝试通过开发web-app-ish服务来更熟悉Haskell.
假设我正在开发一个Web服务器,我希望在请求之间保持持久状态; 例如,一个柜台.什么是Haskell的做事方式?
我在Google搜索中遇到了这个讨论.建议的解决方案看起来像是不该做的一个很好的例子.
我的一个想法是让请求处理程序接受一个MVar:
requestHandler :: MVar State -> IO (Maybe Response)
Run Code Online (Sandbox Code Playgroud)
注册处理程序时,可以使用在main中创建的MVar进行curry.
肯定有更好的办法.我不禁想到我正在以非功能性的方式解决这个问题.
谢谢!
您可能需要Acid-state,它准确地为您提供了:Haskell 数据类型的持久状态。我链接的文档甚至以请求计数器开始,就像您所要求的那样。
请注意,MVar 不是持久的;当服务器重新启动时,计数器将被重置。如果这确实是您想要的行为,我建议您改用TVar;这样您就可以自动更新计数器,而无需锁定或随之而来的死锁风险。
| 归档时间: |
|
| 查看次数: |
492 次 |
| 最近记录: |