相关疑难解决方法(0)

为什么将此递归映射函数仅应用于列表中的最后两个元素?

这是给出的问题:下表中的前8个元素是什么?

mystery = 0 : 10 : (map(+1)mystery)
Run Code Online (Sandbox Code Playgroud)

答案是 [0,10,1,11,2,12,3,13...]

但我认为答案应该是[0,10,1,11,1,11,2,12]。以下步骤显示了原因:

1)我们得到了; list,[0,10]因此在第一次应用该函数后,我们有了列表[ 0,10,1, 11] 2)现在有了一个列表[ 0,10,1,11]因此,在再次应用该函数后,结果列表应该是[0,10,1,11,1,11,2,12]

显然不是这样。谁能解释为什么?

haskell list lazy-evaluation lazy-sequences map-function

2
推荐指数
1
解决办法
113
查看次数