现在,在我的编程冒险开始时,我在理解基本概念时遇到了一些问题。这里有一个与Haskell或可能一般的功能范式相关的例子。
以下是factory中关于累加器工厂问题的一般说明
编写一个函数
正如我所理解的,关键是:“.创建一个函数.生成函数,返回传递给它们的每一个数字的和,而不仅仅是最近的。(这需要一段状态来保存累积值,这又意味着纯函数语言不能用于这项任务。”
我们可以在同一个网站上找到一个Haskell解决方案,而且它似乎做了上面引用的内容。
在这里,http://rosettacode.org/wiki/Category:Haskell说,Haskell纯粹是功能性的。
那么,对这种明显矛盾的解释又是什么呢?或者也许没有矛盾,我只是缺乏一些理解?谢谢。
发布于 2015-10-22 14:52:44
Haskell解决方案实际上并不完全遵循挑战的规则。特别是,它违反了这样一条规则,即函数“返回一个真正的函数,这意味着您可以在任何地方使用以普通方式在程序文本中定义的函数。”它不是返回一个真正的函数,而是返回一个ST计算,该计算产生一个本身产生更多ST计算的函数。在ST“状态线程”的上下文中,可以创建和使用可变引用(STRef)、数组和向量。但是,这种可变状态不可能在状态线程之外“泄漏”,从而污染纯代码。
https://stackoverflow.com/questions/33282863
复制相似问题