Haskell 什么是';命令式思维';什么意思?

Haskell 什么是';命令式思维';什么意思?,haskell,functional-programming,Haskell,Functional Programming,我经常看到有人因为对算法/解决方案进行强制性思考而受到批评,尽管他们似乎对函数式编程有经验 因此,我想知道“命令式思维”是什么意思,以及人们如何避免强制性思维?命令式程序(基本上)是一种具有全球状态内在概念的程序。避免命令式思维就是避免设计利用某种全局状态的算法。Haskell没有全局状态的概念(至少在IO之外),因此避免依赖您的语言没有提供的东西是有意义的。尽管如此,即使在命令式语言中,对不使用任何全局状态的程序进行推理也要容易得多。关于“易变性”也可以说类似的事情。我想说的是,“命令式思维”

我经常看到有人因为对算法/解决方案进行强制性思考而受到批评,尽管他们似乎对函数式编程有经验


因此,我想知道“命令式思维”是什么意思,以及人们如何避免强制性思维?

命令式程序(基本上)是一种具有全球状态内在概念的程序。避免命令式思维就是避免设计利用某种全局状态的算法。Haskell没有全局状态的概念(至少在IO之外),因此避免依赖您的语言没有提供的东西是有意义的。尽管如此,即使在命令式语言中,对不使用任何全局状态的程序进行推理也要容易得多。关于“易变性”也可以说类似的事情。我想说的是,“命令式思维”是把每件事都看作是一系列的步骤或陈述,并按顺序进行评估。因此,与“从c中计算a,从b中计算a”不同,我们会说“计算c,然后从c中计算b,然后从c中计算a”。只要付出足够的努力,用任何语言编写Fortran代码都是可能的