無限を返す,のイメージをそのまま書くとこうなった

無限を返すジェネレータに対して外のifで必要なものだけを取ろうとしてハマった所が悔しいのでjsとpythonで並べて書いた.

[tmp.snapshotItem(j) for each (j in 
  (function (i) {while(1) yield i++})(0)) 
  if (j < tmp.snapshotLength)];
def myrange(i):
    while(1):
        yield i
        i += 1

[i for i in myrange(0) if i < 10]

あ,返ってこないのか..ちなみにmyrangeをxrangeに変えて引数にifの条件の前後を渡したら,ifか引数値のどちらか低い値までが返ってきた.つまりジェネレータが死んだ結果に対してifが働く,と.勉強になった.