【发布时间】:2010-11-20 17:06:39
【问题描述】:
Reddit 上的一个人让我注意到了这段代码:
main = do
let ns = [print 1, print 2, print 3]
sequence_ ns
sequence_ $ reverse ns
sequence_ $ tail ns ++ [head ns]
head ns
这里发生的事情是我们有一系列操作可以用来做一些事情,比如反向或获取它的尾部或头部。
太棒了。
我想要做的是进入单个元素并永久更改它们。例如,我希望能够做这样的事情:
ns !! 0
得到类似 [print, 1] 的内容,然后将最后一个元素更改为 3.14,以便函数打印 3.14。
在 Haskell 中是否有可能,还是我应该回到 LISP?
一个重要的编辑:我有点大错特错了。我了解我需要创建一个新列表。是否可以获取作为列表一部分的函数的参数?我想要的是能够从它们的标识符/参数组合函数,并且还能够在评估之前将函数分解为标识符/参数。
【问题讨论】:
-
顺便说一句:你到底需要这个做什么?
标签: haskell macros lisp lazy-evaluation