【发布时间】:2014-05-21 11:06:47
【问题描述】:
让我远离像 Lisp 这样的函数式语言的一个原因是我不知道如何进行“原始”数组迭代。比如说,我在 C 中有一个数组,它代表屏幕像素的 RGB 值。在 C 中使用 for 循环更改颜色是微不足道的,但如何在 Lisp 中优雅地做到这一点?
编辑:
抱歉,我的问题措辞不正确。 在 C 语言中,当我想改变屏幕上的颜色时,我只需在数组的一部分上编写一个 for 循环。 但是在方案、clojure 或 haskell 中,所有数据都是不可变的。所以当我改变矩阵的一部分时,它会返回一个全新的矩阵。这有点尴尬。是否有一种“干净”的方法来更改矩阵的一部分的颜色,而无需递归整个数组并制作副本?
【问题讨论】:
-
是什么让你认为 Lisp 是一种“函数式语言”? (c.f.stackoverflow.com/questions/6021649/…)
-
在 Lisp 中甚至更简单,因为循环设计模式可以抽象为合适的“映射”程序,为您执行循环。
标签: functional-programming imperative-programming