我一直在阅读很多关于函数式语言的文章,并希望在F#中重写我的应用程序的某些部分。从外面或外面设计是否更好?
答案 0 :(得分:5)
约翰·休斯关于FP Why Functional Programming Matters主题的一部作品可以被视为直接答案:
我们的分解能力 部件问题直接取决于我们粘合解决方案的能力 一起。为了支持模块化编程,语言必须提供良好的 胶。函数式编程语言提供了两种新的粘合剂 - 高阶函数和惰性评估。使用这些胶水可以模块化 程序以新的和有用的方式,我们已经展示了几个例子。 更小,更通用的模块可以更广泛地重用,从而简化后续工作 节目。这解释了为什么功能程序如此小而且 比传统的更容易写。它还提供了功能目标 程序员瞄准。如果程序的任何部分混乱或复杂,那么 程序员应该尝试对其进行模块化并概括部件。他或 她应该期望使用高阶函数和惰性求值作为工具 这样做。
答案 1 :(得分:4)
一篇真正帮助我接受函数式编程的文章就是这样一篇:
http://prog21.dadgum.com/23.html
这是一个如何使用函数式编程技术创建Pac-Man克隆的教程。我甚至不认识他使用的语言(可能是Erlang),但这些解释帮助我理解了在重写Scheme中的一个程序时使用的正确思维方式。
答案 2 :(得分:3)
我在这个问题上根本不是专家,但这里有一篇关于这个主题的文章的链接,由'我们'自己的Brian:
How does functional programming affect the structure of your code?
来自SO& S的一些问题程序员(顺便说一下 - 我怀疑这个问题会更合适)
答案 3 :(得分:2)
不确定我理解“inside out”/“outside in”的含义,但FP在“小”中最有用 - 在功能级别。面向对象可能仍然是组织大型项目的最佳方式。最简单的方法是处理与您的业务领域相关的对象。
答案 4 :(得分:1)
我猜你外面的意思是从上到下的方法,从内到外你的意思是从下到上。如果这是你的意思,那么FP更适合自下而上的方法,即内向外。
设计FP程序时考虑使用以下方法解决问题:
所以基本上你从底部开始,为每个原子问题编写一个函数然后当你在设计中向上移动时,你使用这些原子函数来使用合成创建更高级别的函数。
记住,总是考虑使用抽象和这些抽象的组合来解决问题,而不是像在命令式编程中那样顺序思考。