gpt4 book ai didi

functional-programming - 嵌套函数 : Improper use of side-effects?

转载 作者:行者123 更新时间:2023-12-04 14:37:27 26 4
gpt4 key购买 nike

我正在学习函数式编程,并尝试以函数式风格解决几个问题。在将问题分解为函数时,我经历过的一件事是,我似乎有两个选择:使用具有相似参数列表的几个不同的函数,或者使用嵌套函数,作为闭包,可以简单地引用父函数中的绑定(bind)。

虽然我最终选择了第二种方法,因为它使函数调用更小并且似乎“感觉”更好,但从我的阅读来看,我似乎可能错过了函数式编程的一个要点,因为这似乎是“一面-有效”?现在,这些嵌套函数不能修改外部绑定(bind),因为我使用的语言阻止了这种情况,但是如果你查看每个单独的内部函数,你不能说“给定相同的参数,这个函数将返回相同的结果”因为他们确实使用了父作用域中的变量……我说得对吗?

什么是理想的进行方式?

谢谢!

最佳答案

函数式编程不是全有或全无。如果嵌套函数更有意义,我会采用这种方法。但是,如果您真的希望内部函数是纯函数式的,请将所有需要的参数显式传递给它们。

这是Scheme中的一个小例子:

(define (foo a)
(define (bar b)
(+ a b)) ; getting a from outer scope, not purely functional
(bar 3))

(define (foo a)
(define (bar a b)
(+ a b)) ; getting a from function parameters, purely functional
(bar a 3))


(define (bar a b) ; since this is purely functional, we can remove it from its
(+ a b)) ; environment and it still works

(define (foo a)
(bar a 3))

就个人而言,我会采用第一种方法,但任何一种方法都同样有效。

关于functional-programming - 嵌套函数 : Improper use of side-effects?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/310964/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com