函数式编程语言中的循环、理解和递归之间有什么区别

What is the difference between loop, comprehension and recursion in functional programming languages

我正在研究 elixir,我看到有两种迭代方法

Comprehension
And recursion

特别想知道循环和理解的区别, 我用谷歌搜索了这个问题,但没有得到满意的答案。

from @bradrn

递归 是当一个函数调用自身时,在达到特定条件(“基本情况”)时停止。在纯函数式编程语言中,这是实现迭代的基本构造。

A loop 是一种结构,其中代码块 运行 多次直到达到条件,通常通过更新变量的值,同时或直到它符合指定条件。在命令式编程语言中,这是实现迭代的基本结构;相比之下,纯函数式语言通常不提供循环。 (快速 Google 搜索告诉我 Elixir 没有任何循环。)

A list comprehension 与其他两种构造的不同之处在于它不能(通常)执行任意代码。相反,列表理解只能用于构建列表。列表理解遍历一个(或多个)列表的元素,查看哪些满足特定条件,并将这些满足的元素收集到一个新列表中。