2008-09-19 55 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個出站活動消息。

相關問題