【发布时间】:2015-08-14 12:22:52
【问题描述】:
传统上,人们将 Web 应用程序视为一个 MVC - 它假定一个面向对象的上下文。
函数式编程对此提出了批评 - 并提供了一个使用高阶函数和不可变数据结构的模型。
我的问题是:您如何解释像 Ring 和 Yesod 这样的纯功能 Web 服务器不是 MVC?
【问题讨论】:
-
是什么让您认为 MVC 假定为 OO?我不是说它有或没有,但你的说法让我很好奇。
-
fwiw,对象和函数之间存在密切的映射关系。对象和函数都可以包含代码和做事。纯函数式编程不允许像大多数 OO 那样进行命令式修改,但最早的函数式语言之一 Scheme 是在 OOP 的早期由 Steele 和 Sussman 开发的explore OO ideas。例如在 Scheme 中,您可以定义一个函数,该函数是数据的闭包,并返回允许强制修改或检查该数据的函数。瞧——函数是对象。
标签: haskell model-view-controller clojure functional-programming yesod