在函数式编程中使用mental images

use*_*585 3 functional-programming

当使用纯函数语言时,某种形式的心理图像或图表是否有助于可视化递归和发展延续?

Dar*_*rio 5

首先,看看这个相关的讨论.

如上所述,函数式编程已经非常接近数学符号,并且可以通过符号数学很好地理解和操纵.通常不需要OO意义上的图表,因为它们可以模拟FP中不存在的状态交互.

例如递归在这种符号方法中处理得很好.您可以直接将定义扩展为数学意义上的真方程,以证明特征,获得一个非常直接的,几乎类似伪代码的概述.

map f [] = []
map f (x:xs) = (f x) : map f xs
Run Code Online (Sandbox Code Playgroud)

没有比这更清楚了!

尽管如此,仍有一些隐喻可用于某些概念,如建模状态/序列的功能手段,即monad,applicatives,箭头.有许多漂亮的图像可视化他们如何传播他们的结果.例如:箭头的传送带比喻:

替代文字