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

can*_*dry 2 python functional-programming

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

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

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

Ray*_*ger 5

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

然而,尽管各个步骤不是,但是消费可迭代的聚合动作可以是参考透明的.例如,list('cat')虽然list的实现使得对字符串迭代器重复下一次调用,但确定性和引用是透明的.