什么取代了函数式编程中的 MVC 模式?

Posted

技术标签:

【中文标题】什么取代了函数式编程中的 MVC 模式?【英文标题】:What replaces the MVC pattern in functional programming? 【发布时间】:2013-05-31 13:30:00 【问题描述】:

我是一名 MVC Web 开发人员,对编写 Web 应用程序的函数式编程非常感兴趣(具体来说,我对 Erlang 和 Cowboy 很着迷。)

我无法找到答案/资源是什么模式用于替换 FP 中的 MVC。

显然,ORM 的想法在 FP 中是可笑的,因为它不是面向对象的,那么用什么来代替它来实现持久性逻辑呢?是否通常只构建一个使用库来创建与数据存储交互的函数的模块,或者是否有类似于 ORM 的工具?

我们将不胜感激建议和资源链接。 Erlang/Cowboy 特定帮助的奖励积分。谢谢。

【问题讨论】:

This question 帮助我理解为什么这个答案似乎缺失,但我仍然对有 FP 经验的人的建议感兴趣,具体到 ORM 类型的工作。跨度> 看看Deprecating the Observer Pattern with Scala.React 【参考方案1】:

Erlang 有 MVC 框架。例如,它是 ChicagoBoss。

【讨论】:

谢谢伙计。我看过 ChicagoBoss,我想我更喜欢 Cowboy 或 WebMachine 之类的更苗条的东西。我意识到这意味着没有 ORM 等效项,但我试图弄清楚 FPers 通常如何在没有 ORM 的情况下做到这一点。 您可能想看看nitrogenproject.com - 它不完全是 MVC(它是使用 Erlang 模式匹配的事件驱动的)。我发现它重量轻,开发周期快。顺便说一句,在 Erlang 中较少需要类似 ORM 的工具,因为 Mnesia 等数据库允许将术语存储在数据库中并作为术语读回,即不需要 映射或翻译层,因为没有什么可翻译的。【参考方案2】:

Lift 框架(用 Scala 编写)使用称为“视图优先”的模式。

关注链接https://www.assembla.com/wiki/show/liftweb/View_First

【讨论】:

【参考方案3】:

我是 erlang 的编码员。我使用 erlang 作为我的网络游戏服务器... 所以......没有视图......在功能语言中,这不是模型...... 所以从我的角度来看,函数语言不需要MVC (就像函数语言中没有类或子类..)

【讨论】:

【参考方案4】:

引用@yarivs 的article:

Erlang 确实在 MVC 的所有字母中占有重要地位。对于模型,忘记数据库抽象层:您有一个名为 Mnesia 的纯 Erlang 分布式数据库。对于视图,Yaws 具有 ehtml。对于控制器,Yaws 有 appmods 和 Erlang 的模式匹配。

我希望这会有所帮助。

【讨论】:

以上是关于什么取代了函数式编程中的 MVC 模式?的主要内容,如果未能解决你的问题,请参考以下文章

函数式编程中的策略模式

聊聊函数式编程

预售┃Scala与Clojure函数式编程模式:Java虚拟机高效编程

大前端进击之路:函数式编程

函数式编程--为什么要学习函数式编程?

Scala函数式编程