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

dec*_*eze 80 haskell

受到这个问题和最近事件的启发,我想知道Haskell Web开发涉及什么.

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

Phi*_*hil 36

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

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


Tom*_*rst 18

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

如果你看看Hackage 上的Web类别,有很多与web相关的包.

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

最突出的Haskell web服务器/框架/数据存储infrastruction是Happstack,这是有趣的几个原因,其中最明显的就是它存储所有的状态在内存中,并且不使用关系数据库.

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

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


lun*_*ain 14

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

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

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

它是开源的,你可以在GitHub上查看它,也许可以用它作为起点.

  • Haskell允许标识符中的引号.不幸的是,github的语法突出显示了这一点. (10认同)

Don*_*art 9

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

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

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

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

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

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

不会.由于类型系统,你会得到更强的保证,应用程序没有错误.

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

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


Sha*_*aun 7

首先,该死的,如果这个"事件"链接不是有史以来最有趣的事情之一!

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

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

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