haw*_*eye 4 model-view-controller haskell functional-programming clojure yesod
传统上,人们将Web应用程序视为MVC - 它假设是面向对象的上下文.
函数式编程批评了这一点 - 并提供了一个使用高阶函数和不可变数据结构的模型.
我的问题是:你如何解释像Ring和Yesod这样的纯功能网络服务器不是MVC?
Sib*_*ibi 13
我将尝试回答有关Yesod的问题.
您如何解释像Ring和Yesod 这样的纯功能Web服务器不是MVC?
Yesod不是Web服务器.Yesod是一个Web框架.warp是与Yesod一起使用的推荐Web服务器.
您如何解释像Ring和Yesod这样的纯功能Web服务器不是MVC?
这不一定是真的.您可以将模板用作视图,持久作为模型和路由以及作为Controller进行处理.事实上,脚手架网站松散地遵循MVC方法.
函数式编程批评了这一点 - 并提供了一个使用高阶函数和不可变数据结构的模型.
这与这个MVC无关.MVC只是一种设计模式.高阶函数和不可变数据结构不会阻止您遵循某些体系结构或设计模式.
您可以为MVC假设OO上下文,这就是它诞生的地方,但您当然不必这样做.MVC只是说模型,视图和控制器应该是以某种方式交互的独立事物; 在OO语言中,将它们表示为类很方便,但这不是必需的.参见例如MVC和Purity:
接触过纯函数式编程后,我现在认为控制器和模型/视图分离恰恰是侧面效应代码(IO)和纯代码之间的分离.