我想在我的项目中更多地使用 Haskell,我认为如果我可以开始将它用于 Web 应用程序,那真的会有所帮助。我已经尝试过一次或两次,但在起步时遇到了麻烦。是否有更简单/更传统(更像灯)的框架可供我使用,还是我应该再试一次?
8 回答
截至 2011 年的最佳工具是:
围绕 Haskell 的 Web 开发社区一直在这些社区之间的竞争中蓬勃发展。
作者甚至在这里比较他们的框架:比较 Haskell 的 Snap 和 Yesod Web 框架
如果您决定使用 HApps,您可能需要查看这个正在开发为 HApps 应用程序的优秀示例驱动教程: HApps 教程
我以最高功能/代码大小比的想法开发了 MFlow。MFlow 没有考虑其他框架,而是最大限度地使用 Haskell 来解决 Web 应用程序的问题,从而大幅降低 Web 编程中的噪音和错误率。MFlow 应用程序中的整个导航在编译时是安全的。它使用标准网络库:WAI、formlets、stm、blaze-html..
自己判断:这是一个包含三页的完整应用程序。在一个循环中,它要求两个数字并显示总和。您可以随意按下后退按钮:
module Main where
import MFlow.Wai.Blaze.Html.All
main= do
addMessageFlows [("sum", transient . runFlow $ sumIt )]
wait $ run 8081 waiMessageFlow
sumIt= do
setHeader $ html . body
n1 <- ask $ p << "give me the first number" ++> getInt Nothing
n2 <- ask $ p << "give me the second number" ++> getInt Nothing
ask $ p << ("the result is " ++ show (n1 + n2)) ++> wlink () << p << "click here"
只需稍作修改,即可使状态持久化。
http://hackage.haskell.org/package/MFlow
这里有例子:http: //haskell-web.blogspot.com.es/
Web 应用程序接口WAI 是一个非常好的基础层,您可以在其上构建应用程序。有很多关于 hackage 的不错的库,用于路由、模板等,它们与 WAI 结合使用效果很好,这就是我所做的。
您可以使用 CGI 和 (x)html 组合库,如 wiki 的Haskell Web Development文章中所列。可以在 Haskell 中的实用 Web 编程中找到有关 Haskell中 Web 编程的库、框架等的更大概述。
Yesod 将是一个不错的选择,您可以在线找到 O'Reilly 的Yesod Web Framework Book。