Haskell中的纯函数是否可以像在Functional Programming Is A Scam! by David Nolen中提到的那样通过clojure的方式来变异局部变量副本?如果不是这个原因是什么,如果有的话,是否有任何人可以指点我的例子?Haskell中的纯函数可能会变异变量的本地副本吗?
在Functions that look pure to callers but internally use mutation中提出了一个类似的问题,一般认为似乎是纯功能进行突变是可以的,只要突变是在变量的局部拷贝上进行的(即突变的影响不逃避功能并产生非本地效应)。
的问题出现了,当我在翻译沉(Local mutation, global mutation, mutable datastructures,Bubblesort in Qi),它确实不变异列表中,以共同口齿不清和比较,在冒泡Bubblesort in Common Lisp,其中不变异列表中的冒泡排序。结果是,我发现(在Common Lisp中)对于非常大的列表来说,突变列表的版本要比没有突变列表的版本快得多。
谢谢。 Haskell Wiki中的sumST例子很清楚纯函数如何使用局部变异。 – artella