我最近看到很多关于函数式编程的东西,而Clojure看起来特别有趣.虽然我"理解"它的基本描述,但是如果我可以的话,我无法弄清楚如何在日常工作中使用它作为Web开发人员.我所阅读的很多内容都集中在函数式编程的数学方面,而不是常规OO中的典型编程情况.
我有错误的结束吗?函数式编程与Web开发完全无关吗?如果没有,是否有任何关于它'用于网络'的例子?
功能编程非常适合Web应用程序.Web应用程序接收HTTP请求并生成HTML结果.这可以被视为从页面请求的功能.
与桌面应用程序相比,我们通常具有长时间运行的进程,多个方向的有状态UI和数据流.这更适合关注具有状态和消息传递的对象的OO.
我头顶的几个例子:
雅虎 Store由Lisp提供支持(最初在收购前命名为Viaweb)
Reddit在Lisp中完全是原型,尽管他们在2005年转向Python
黑客新闻完全用Arc(一种Lisp方言)编写
我不明白为什么不这样做 - 只要您向浏览器提供符合标准的HTML,他们就不关心您用它来制作它,无论是功能语言,命令式语言还是训练有素的猴子.
纯函数式编程可能无法很好地映射到Web编程环境中.但主要障碍是缺乏基础设施(框架和API).在功能语言拥有与Java,Python或Ruby一样丰富的Web编程环境之前,这将是一段很长的时间(可能永远不会,老实说).
也就是说,有一些选择.
HAppS - 一个Haskell Web应用程序服务器
Haskell服务器页面
链接 - 一种功能性的网络编程语言
mod_caml - Apache的OCaml CGI模块
Ocsigen/Eliom - OCaml Web服务器/编程框架
OPA - 商业Web应用程序框架
Yesod - Haskell的Web框架
我没有任何经验.也许评论者可以权衡什么对他们有用.
Twitter在Scala中重写了它们的后端,Scala是一种支持面向对象和功能范例的JVM语言.
此外,Lift Web框架是用Scala编写的.