功能语言中的分解(模块化)

Pav*_*ara 9 components functional-programming dependency-injection

有个主意:函数(在FP中)可以像OOP中的组件一样组成.对于OOP中的组件,我们使用接口.对于函数,我们可以使用委托.目标是实现分解,模块化和可互换性.我们可以使用依赖注入来简化它.

我试着找一些关于这个话题的东西.没运气.可能是因为没有足够大的功能程序需要这个?在搜索用FP编写的企业级应用程序时,我找到了这个列表. 现实世界中的功能编程本文.我希望我错过了FP的杀手级应用程序,这个应用程序足够大,值得分解.

问题:您能否展示出体现真实的FP应用程序(最好是开源),它将分解用于模块?

Bonus chatter:使用的常用模式是什么?什么样的功能通常会分解成单独的模块?这些实现是否曾被用于测试目的?

Mau*_*fer 5

前段时间我正在学习F#并想知道相同的主题,所以我询问了要学习的高质量开源项目.

你没有在函数式​​编程中看到类似于依赖注入的原因是它只是"自然的",因为你只是通过传递或组合函数来"注入依赖".或者正如本文所说," 功能依赖注入== currying ",但这只是一种机制.

模拟框架不是必需的.如果你需要模拟一些东西,你只需传递一个"存根"函数.

另请参阅有关实际Scala应用程序的此问题.

  • @Pavel:最后,如果你最近开始使用FP,我建议你试着忘记所有关于DI和其他OOP模式的事情,然后继续使用它.像往常一样,最好的学习方法就是这样做. (2认同)