ami*_*wal 23 design-patterns functional-programming principles
在使用函数式编程语言编写代码时,是否有任何已知的原则,最佳实践和设计模式?
fis*_*ips 20
有折叠,展开,地图等.
我考虑使用它们的最佳实践,因为它很容易推理它们的行为,并且它们经常传达函数的目的(例如,只需看看着名的Haskell程序员的演变和对比新生与高级,和教授一起).
Nor*_*sey 10
设计模式:让类型指导您的编码.
找出你想要返回的类型.
知道某些类型构造函数具有某种语法,并利用它来使所需类型更小.这是两个例子:
如果您尝试返回函数类型T1 -> T2,则始终可以安全地编写
\ x -> ...
Run Code Online (Sandbox Code Playgroud)
现在你正在尝试生成一个类型的值T2,这是一个较小的类型,而且你已经获得了额外x的类型值T1,这可以使你的工作更容易.
如果lambda变得不必要,你可以随时将它减少.
如果您尝试生成一对类型(T1, T2),则可以始终尝试生成x类型T1值y和类型值T2,然后形成该对(x, y).同样,您已将问题简化为类型较小的问题.
一旦类型尽可能小,您可以查看范围内所有let-bound和lambda-bound变量的类型,并了解如何生成所需类型的值.通常,您希望使用所有函数的所有参数; 如果你不这样做,请务必解释原因.
在许多情况下,特别是在编写多态函数时,这种设计技术可以将复杂函数的构造减少到一个或两个选项.这些类型指导程序的构造,因此很少有方法可以编写正确类型的函数 - 通常只有一种方法没有明显错误.
不要遵循原则,遵循你的鼻子.保持功能简短.寻找降低代码复杂程度的方法,这通常但不一定意味着最简洁的代码.了解如何使用内置的高阶函数.
在编写函数后立即重构并减小函数的代码大小.这样可以节省时间,因为明天您不会在脑海中遇到问题和解决方案.