对于python迭代器,下一个方法是否是引用透明的?

时间:2012-05-13 04:07:45

标签: python functional-programming

对我来说,似乎很明显Iterator对象X,方法:

  • X.next() python 2.x
  • X.__next__() python 3.x

不是引用透明的,因为每次调用都会返回不同的结果。 但是,我只需要确认我是对的。感谢。

2 个答案:

答案 0 :(得分:5)

你是对的,迭代器可以在每次调用时返回不同的结果,因此它不能被称为refereically transparent。

但是,消耗 iterable 的聚合操作可以是参考透明的,尽管个别步骤不是。例如,list('cat')是确定性和引用透明的,但 list 的实现会在字符串迭代器上重复 next 调用。

答案 1 :(得分:0)

X一样,它具有参考意义。该方法本身不会改变透明度,但迭代可以根据需要简单或复杂。

相关问题