2008-09-19 51 views
13

是否有一种功能性语言对建立Web服务有很好的支持和工具?我一直在寻找Scala(可编译为JVM并可以使用Java库)和F#(即.NET),但这些都很年轻,并且效率低下。除了自递归函数外,Scala特别不​​支持tail-call消除,这限制了您可以执行的组合类型(这是JVM的一个基本限制)。 F#是非常新的,似乎还没有完全支持,这使得它比一个更传统的语言风险更大。构建Web服务的良好功能语言是什么?

是否有可能使用Haskell,ML或任何其他更传统的函数式语言来构建Web服务,还是使用Scala或F#更好?还有其他建议吗?

+0

http://stackoverflow.com/questions/105834/does-the-jvm-prevent-tail-call-optimizations问你的断言重新:尾递归。你能在这里或那里详细说明吗? – rcreswick 2008-09-19 21:37:45

+0

投票结束,因为工具建议太宽泛。 – 2015-06-19 12:53:48

+1

@Ciro Santilli - 我同意,特别是现在有一个程序员堆栈交换站点,用于解决这样的问题。 – Sam 2015-06-21 09:07:42

回答

10

如果.NET是该平台的一个选项,请不要因为年轻而折扣F#。随着它越来越接近成为官方产品,它与Visual Studio的结合越来越好,并继承了.NET提供的所有优点。

微软和一个热情的社区也提供了积极和方便的支持。

0

虽然我不能推荐它,因为我还在玩它,Erlang非常强大。

2

如果您为了好玩,而不是为了任何健壮或工作场所,可以调查ARC。这是一个未完成的,正在进行的语言,其优点和缺点都意味着。

免责声明:不可与ARC或保罗·格雷厄姆

8

ocaml的下属有Ocsigen/Eliom ...我不能说我已经用它,虽然。它也处于早期阶段。

5

厄朗,与Yaws。这是一个有趣而强大的语言,可以非常好地扩展,并且使得100或1000个过程安全和简单。和乐趣。

(我也觉得它很漂亮。)

4

请阅读F# and ASP.NET此介绍,这将给你一个良好的开端。

在Web应用程序中使用F#的Web上有几个示例。其中之一是例如Tomas Petricek的autocompleter,他作为他的文章"F# Web Tools: Ajax applications made simple"的说明性应用而构建。我已经使用F#作为web服务的一部分,我也向你保证它工作的很好:)。

-1

上一代功能语言的工具类似于Ocsigen(用于OCaml)和HApps(用于Haskell),但它们几乎没有用户:它们是完全未经测试的软件。

相比之下,Scala和F#构建在Java和.NET非常优秀的代码之上。尤其是,F#在过去的一年中一直由微软开发,因为它正在进行产品化。没有其他功能语言能够获得这种支持水平,因此F#已经非常有用了(在开发工具方面远远领先于像Haskell这样的语言)。

1

您可能会考虑Clojure - 这是一种非常新的语言,但对于可伸缩的并发应用程序来说看起来非常有前景,并具有非常好的JVM集成和访问所有Java库(就像Scala一样)的优势。

Clojure中也有相当多的设计特点,其周围的尾递归问题得到(特易复发结构,许多核心功能实现迭代等)

0

我必须与Clojure的建议,同意。我刚刚完成了一个news feed service written in Clojure的负载测试,该测试在m1.medium EC2实例上运行的每个Clojure Web服务器每秒维持80个出站活动消息。

相关问题