Haskell Web开发的生态系统是什么?

时间:2009-08-10 06:16:45

标签: haskell

受到this问题和最近affair的启发,我想知道Haskell网站开发涉及什么。

  • 是否有任何Haskell Web框架或模板引擎?
  • 如何托管Haskell网站,是否有合适的网络服务器?
  • 对于通常用于Web开发的常规快速开发和基于原型设计的工作流程,Haskell是否过于复杂?
  • 是否有现有Haskell Web应用程序的示例?

5 个答案:

答案 0 :(得分:35)

我在Haskell中完成了真正的生产Web应用程序。这是我使用的堆栈:

整个Web应用程序是一个haskell程序,编译为本机代码ghc。我编写了代码来手动执行请求路由(和反向路由)。

答案 1 :(得分:18)

首先,免责声明:我从未做过任何Haskell网络开发,所以我不会根据经验说话。

如果你看一下Hackage上的Web category,就会有很多与网络相关的软件包。

我认为大多数Haskell Web应用程序在自定义服务器上运行(可能使用Apache的mod_proxy或IIS的高级请求路由作为前端)。但是,也有一些FastCGI绑定。

最突出的Haskell网络服务器/框架/数据存储基础设施是Happstack,由于几个原因这很有意思,最明显的是它将所有状态存储在内存中并且不使用关系数据库。 / p>

另一个更新的网络服务器界面是hack,除了1分钟的教程看起来很有趣之外我不太了解。

Haskell中有更多的Web服务器/框架,但这两个只是我所知道的最重要的。

答案 2 :(得分:13)

我使用Happstack为我们的本地Intranet创建一个简单的webapp / webservice。

  • 它使用事务日志将数据存储在内存中以进行恢复(标准为Happstack)。您无法在任何地方找到SQL代码。
  • 没有模板。通常用模板做什么,我用Javascript做。只需获取JSON格式的数据,然后将其放入DOM中。

只有169行Haskell代码,全部在Main.hs中,用于定义服务器。其余的是用于演示的Javascript,以及用于测试的一些Python。

它是开源的,您可以在GitHub上查看,也许可以将其作为起点。

答案 3 :(得分:8)

  • 是否有任何Haskell Web框架或模板引擎?

有许多Web框架。查看Web类别:http://hackage.haskell.org/packages/archive/pkg-list.html#cat:web

对于模板,HStringTemplate似乎是品牌领导者:http://hackage.haskell.org/package/HStringTemplate

  • 如何托管Haskell网站,是否有合适的网络服务器?

运行自己的Web服务器的静态链接二进制文件(例如,happstack-server或其他Haskell Web服务器之一),Haskell二进制文件与Apache交谈,......几乎可以想到的每个组合。

  • 对于通常用于Web开发的常规快速开发和基于原型设计的工作流程,Haskell是否过于复杂?

没有。由于类型系统,您将获得更强大的保证应用程序没有故障。

  • 是否有现有Haskell Web应用程序的示例?

hpaste是一个简单的快乐堆栈演示。 Tupil.com的整个业务是Haskell网络应用程序。德意志银行去年在CUFP上就其内部Haskell网络框架(基于happstack)发表了演讲。

答案 4 :(得分:6)

首先,该死的“事情”链接不是最有趣的事情之一!

现在,当我在另一个链接上发布答案时,我认为在Haskell网站上并没有发生太多事情。你有Happstack,也许还有其他一些似乎无处可去的框架。那你就得到了FastCgi。

如果你喜欢我,那么FastCgi可能足以满足你的大部分需求。我发现,大多数客户并没有真正存在规模问题(此外,对于Ruby人来说,它还不错,对吧)。

如果FastCgi不是你的速度......好吧,也许是雅马声或升力(分别是Erlang和Scala)值得一看。