My specific use case was working with 'infinite lists', so the first options is ruled out.
The second option could be a solution, but the specific case was reusing a variable `const nums = iu.iterate(x => x+1, 1)`, and quite extensively. (It's just a helper function to make a list of all natural numbers)
It would be so much nicer if I could just reuse this variable throughout my code
I know that as per the iterator spec this is normal behaviour. It just seems to me that the behaviour that follows from this is really quite strange. When I want to be able to loop over the contents twice, how am I supposed to to that?
When me and my friends were participating in a contest, half of the program's chrashes were because of wrongly passing arguments to another function. Reversing their order for example. I know, that's just plain stupid, but it has happend multiple times ;)
So I set out to make a library that makes type checking just a little bit easier. I hope that next time we take part in that competition, this will save us some time
Because now it does this