在MVC web開發框架,如Ruby on Rails的,Django的,和CakePHP,HTTP請求被路由到控制器,取其通常持續到後端數據庫存儲的對象。這些對象代表之類的用戶,博客文章等,並經常包含其方法的權限內的邏輯,獲取和/或突變其他對象,驗證等Rails類型的webapp中的'Model'如何以函數式編程語言實現?
這些框架都非常面向對象。我已經在函數式編程最近讀了,它似乎吹捧巨大的好處,如可測試性,簡潔性,模塊化等,但大部分我已經看到了函數式編程示例實現諸如快速排序或fibonnacci序列瑣碎的功能,而不是複雜的webapps。我已經看了一些'功能性'的web框架,他們似乎都實現了視圖和控制器,但很大程度上忽略了整個'模型'和'持久性'部分。 (我說的是更多關於這應該是純功能類似的Compojure框架,對電梯的東西它方便地似乎使用斯卡拉爲模型OO部分 - 但糾正我,如果我錯了這裏)
我還沒有看到的編程功能如何可以被用於提供面向對象編程提供了隱喻,即表映射到對象一個很好的解釋,和對象可以具有提供強大的方法,封裝的邏輯,如應用權限和驗證。同樣,使用SQL查詢來保存數據的整個概念似乎違反了整個「副作用」概念。有人能夠提供一個關於如何在功能性編程的Web框架中實現'模型'層的解釋嗎?
功能語言試圖限制副作用是。但限制總是在程序的範圍內。數據存儲和IO存在於應用程序邊界之外,因此它們是可以接受的。一旦數據進入應用程序之後,那麼數據的轉換和路由應該是可以理解和確定的。 – 2010-04-29 23:47:20