Functional programming 使用';外部';纯函数中的函数会使其不纯净吗?

Functional programming 使用';外部';纯函数中的函数会使其不纯净吗?,functional-programming,Functional Programming,我来自命令式编程的背景,最近开始钻研函数式编程。我对纯函数的一个概念感到困惑。据我所知,纯函数是指在给定相同输入的情况下,总是计算出相同结果的函数,也是一个没有副作用的函数 我的困惑源于在函数中使用函数。如果我有两个函数(伪代码): bar依赖外部函数foo来计算其结果。这会导致条不纯吗?如果是这样的话,怎么能用纯函数编写程序呢?是否必须将一组实用程序函数作为参数传递(例如count()或map()等)?我觉得我完全误解了函数式编程的一个重要方面 谢谢 不太可能。使函数不纯的是副作用。如果函数将

我来自命令式编程的背景,最近开始钻研函数式编程。我对纯函数的一个概念感到困惑。据我所知,纯函数是指在给定相同输入的情况下,总是计算出相同结果的函数,也是一个没有副作用的函数

我的困惑源于在函数中使用函数。如果我有两个函数(伪代码):

bar
依赖外部函数
foo
来计算其结果。这会导致
不纯吗?如果是这样的话,怎么能用纯函数编写程序呢?是否必须将一组实用程序函数作为参数传递(例如count()或map()等)?我觉得我完全误解了函数式编程的一个重要方面


谢谢

不太可能。使函数不纯的是副作用。如果函数将信息泄漏到调用方以外的其他地方,或者从调用方以外的其他地方检索信息

作为副作用的一个例子,您已经从键盘或文件中读取并打印或存储到文件中。另一个可能是在函数中存储状态。柜台。这算你打了多少次电话。不管它是局部的还是全局的,所以改变任何变量都是副作用。这一切都会使函数变得不纯

通常,你永远无法使你的程序100%正常运行。你需要小而脏的端口,它以某种方式使用输入(或者每次运行时你都在计算完全相同的输入),并以某种方式显示结果(或者为什么首先运行它..除非你使用你的priogram来管理你的公寓,以防你有副作用,并且它又是不纯净的)

function foo(x) { return x+1; }

function bar(x) { return foo(x); }