是否有一种函数式语言能够为构建 Web 服务提供良好的支持和工具?我一直在研究 Scala(它编译到 JVM 并可以使用 Java 库)和 F#(即 .NET),但它们还很年轻并且效率低下。Scala 尤其不支持尾部调用消除,除非在自递归函数中,这限制了您可以执行的组合类型(这是 JVM 的基本限制)。F# 非常新,似乎尚未得到完全支持,这使得它比更传统的语言风险更大。

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

有帮助吗?

解决方案

如果 .NET 是该平台的一个选项,请不要因为 F# 还很年轻而忽视它。随着它越来越接近成为正式产品,它与 Visual Studio 的集成越来越好,并继承了 .NET 提供的所有优点。

Microsoft 和热情的社区也提供了积极且容易获得的支持。

其他提示

奥卡梅尔有 奥克西根/埃利奥姆...但我不能说我用过它。它也处于早期阶段。

艾尔兰,与 雅司病. 。它是一种有趣、功能强大的语言,可扩展性非常好,并且可以安全、轻松地使用 100 或 1000 个进程。和乐趣。

(我也觉得很好看。)

哈斯克尔:

看看这个问题:在 Haskell 中编写 Web 应用程序的最简单方法是什么?

基本上, , HAppS雅努斯 是目前 Haskell 中的三个大的。我投票给 HAppS,它拥有最好的 教程 眼下。

还有 热休克蛋白 但我最近没有看过或思考过它。

请阅读此介绍 F# 和 ASP.NET 这会给你一个好的开始。

网络上有几个在 Web 应用程序中使用 F# 的示例。其中之一是例如 自动完成器 Tomas Petricek 的文章,他将其构建为文章的说明性应用程序 “F# Web 工具:Ajax 应用程序变得简单”. 。我自己也使用 F# 作为 Web 服务的一部分,我向您保证它运行良好:)。

如果您这样做是为了好玩,而不是为了任何稳健性或工作场所,您可以调查一下 . 。它是一种未完成的、正在进行中的语言,具有其优点和缺点。

免责声明:不隶属于 ARC 或 Paul Graham

Reddit 是基于 Lisp 构建的,不是吗?和 保罗·格雷厄姆评价很高 其敏捷性,尤其是网络应用程序。

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

Clojure 还有很多设计功能可以解决尾递归问题(特殊的递归构造、许多核心功能都是迭代实现的等)

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

我必须同意 Clojure 的建议。我刚刚完成了一个负载测试 用 Clojure 编写的新闻提要服务 在 m1.medium EC2 实例上运行的每个 Clojure Web 服务器每秒可维持 80 个出站活动帖子。

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

相比之下,Scala 和 F# 构建在经过充分测试的 Java 和 .NET 代码之上。特别是,F# 在过去的一年里得到了微软的大力开发,因为它正在产品化。没有其他函数式语言曾获得过如此级别的支持,因此 F# 已经非常实用(并且在开发工具方面远远领先于 Haskell 等语言)。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top