2008-09-09 59 views
19

我想为我的项目使用更多的Haskell,我想如果我可以开始将它用于Web应用程序,那真的会有所帮助。我已经尝试过一次或两次,但在起步时遇到了困难。有更简单/更传统(更像灯)的框架,我可以使用,或者我应该再次尝试一下吗?在Haskell中编写Web应用的最简单方法是什么?

回答

1

您可以使用CGI和(x)html组合函数库,如wiki的Haskell Web Development文章中所列。可以在Practical web programming in Haskell中找到关于haskell中的web编程的库,框架等更大的概述。

+0

CGI是很简单的,尤其是在运行Apache系统。您只需创建一个可打印出HTML页面(或其中的一部分)的可执行文件。您可以解析url(GET)字符串并使用环境变量从系统获取POST数据。这很简单,但从这些作品构建系统需要努力。 – 2008-12-01 18:56:52

4

如果你决定去与HApps你可能会想签被开发为HApps应用这个很好的例子驱动教程: HApps Tutorial

0

还有Hope(链接折旧),虽然它似乎没有获得像HAppsWASH那样多的牵引力。然而,该网站也已安静了大约一年。

2

WAI,Web Application Interface是一个非常好的基础层,您可以在其上构建应用程序。关于路由,模板等的hackage上有很多很好的库,它们与WAI结合使用,这正是我所做的。

4

我开发了具有最高功能/代码大小比例思想的MFlow。 MFlow是在没有考虑其他框架的情况下制作的,但是为了解决Web应用程序的问题以极大地降低Web编程中的噪声和错误率,使用Haskell达到了极限。 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/

相关问题