國內有哪些公司用Haskell做網站後端的?


你好,我是滴滴出行架構組的工程師。我們使用Haskell支撐內部交通數據可視化的後端。這個可視化的產品雖然並不是直接面向終端用戶,但是在提升公司運營效率方面還是起到了很大的幫助的。

=============================================================

大家可能感興趣一個Haskell寫出來的API是什麼樣子,當然不同的庫有不同的設計思路,我目前是apiary的maintainer,我這邊使用的也是這個庫,因為不支持ghc 8的原因,apiary已經從stackage里移除了,我這邊也正在作升級到ghc 8的調整(不過不保證發版時間,畢竟還有很多其他的工作)。我舉個我們可視化這邊的例子讓大家感受一下。我們把地圖劃分為很多六邊形的格子來作為基本的統計單位,那麼肯定需要一個介面來提供這些六邊形的坐標信息,下面這個介面從資料庫里查詢經度和緯度在一定範圍內的六邊形並輸出成JSON:

...
gridRouter = do
[capture|/getgrids_v2|] .
([key|clngmin|] =: pDouble) .
([key|clngmax|] =: pDouble) .
([key|clatmin|] =: pDouble) .
([key|clatmax|] =: pDouble) . action $ do
(clngmin, clngmax, clatmin, clatmax) &<- [params|clngmin, clngmax, clatmin, clatmax|] hexos &<- runSql $ selectList [ HexogenClng &>. clngmin
, HexogenClng &<. clngmax , HexogenClat &>. clatmin
, HexogenClat &<. clatmax ] [] lazyBytes (encode hexos) ...

可以看到,由於DSL的大量使用,Haskell的代碼基本上如同白話一半了。


推薦閱讀:

Haskell 有哪些威力十足的庫?
有沒有比較實用、成熟的 Haskell 應用?
使用 Cabal hook 構建複雜 Haskell 項目
GHC擴展-XRankNTypes是什麼?如何理解forall .?

TAG:網站開發 | Haskell |