oh that's interesting.  this is from 
https://github.com/JuliaLang/Iterators.jl i guess.

it doesn't support read though (which i didn't realise i needed when i 
first asked).

i'll add a warning to StatefulIterators pointing people to this.

thanks,
andrew

On Monday, 9 November 2015 17:07:52 UTC-3, Dan wrote:
>
> XXX in your questions = chain.
> Or more clearly:
> julia> stream = chain([1,2,3,4,5])
> Iterators.Chain(Any[[1,2,3,4,5]])
>
> julia> collect(take(stream, 3))
> 3-element Array{Any,1}:
>  1
>  2
>  3
>
>
> On Monday, November 9, 2015 at 7:47:51 PM UTC+2, andrew cooke wrote:
>>
>>
>> hmmm.  maybe i'm doing it wrong as that only gives a factor of 2 speedup.
>>
>> anyway, it's all i need for now, i may return to this later.
>>
>> thanks again,
>> andrew
>>
>> On Monday, 9 November 2015 14:11:55 UTC-3, andrew cooke wrote:
>>>
>>>
>>> yes, i'm about to do it for arrays (i don't care about performance right 
>>> now, but i want to implement read with type conversion and so need the 
>>> types).
>>>
>>> On Monday, 9 November 2015 11:20:47 UTC-3, Yichao Yu wrote:
>>>>
>>>> On Mon, Nov 9, 2015 at 8:04 AM, andrew cooke <and...@acooke.org> 
>>>> wrote: 
>>>> > 
>>>> > https://github.com/andrewcooke/StatefulIterators.jl 
>>>>
>>>> FYI, one way to make this more efficient is to parametrize the 
>>>> iterator. You could easily do this for Array's. In the more general 
>>>> case, you needs type inference to get the type right for a 
>>>> non-type-stable iterator (iterator with a type unstable index...) but 
>>>> it's generally a bad idea to write code that calls type inference 
>>>> directly. 
>>>>
>>>> > 
>>>> > 
>>>> > On Monday, 9 November 2015 06:24:14 UTC-3, andrew cooke wrote: 
>>>> >> 
>>>> >> thanks! 
>>>> >> 
>>>> >> On Sunday, 8 November 2015 22:40:53 UTC-3, Yichao Yu wrote: 
>>>> >>> 
>>>> >>> On Sun, Nov 8, 2015 at 8:11 PM, andrew cooke <and...@acooke.org> 
>>>> wrote: 
>>>> >>> > I'd like to be able to use take() and all the other iterator 
>>>> tools with 
>>>> >>> > a 
>>>> >>> > stream of data backed by an array (or string). 
>>>> >>> > 
>>>> >>> > By that I mean I'd like to be able to do something like: 
>>>> >>> > 
>>>> >>> >> stream = XXX([1,2,3,4,5]) 
>>>> >>> >> collect(take(stream, 3)) 
>>>> >>> > [1,2,3] 
>>>> >>> >> collect(take(stream, 2)) 
>>>> >>> > [4,5] 
>>>> >>> > 
>>>> >>> > Is this possible?  I can find heavyweight looking streams for IO, 
>>>> and I 
>>>> >>> > can 
>>>> >>> > find lightweight iterables without state.  But I can't seem to 
>>>> find the 
>>>> >>> > particular mix described above. 
>>>> >>> 
>>>> >>> Jeff's conclusion @ JuliaCon is that it seems impossible to 
>>>> implement 
>>>> >>> this (stateful iterator) currently in a generic and performant way 
>>>> so 
>>>> >>> I doubt you will find it in a generic iterator library (that works 
>>>> not 
>>>> >>> only on arrays). A version that works only on Arrays should be 
>>>> simple 
>>>> >>> enough to implement and doesn't sound useful enough to be in an 
>>>> >>> exported API so I guess you probably should just implement your 
>>>> own. 
>>>> >>> 
>>>> >>> Ref 
>>>> >>> 
>>>> https://groups.google.com/forum/?fromgroups=#!searchin/julia-users/iterator/julia-users/t4ZieI2_iwI/3NTw1k406qkJ
>>>>  
>>>> >>> 
>>>> >>> > 
>>>> >>> > (I think I can see how to write it myself; I'm asking if it 
>>>> already 
>>>> >>> > exists - 
>>>> >>> > seems like it should, but I can't find the right words to search 
>>>> for). 
>>>> >>> > 
>>>> >>> > Thanks, 
>>>> >>> > Andrew 
>>>> >>> > 
>>>>
>>>

Reply via email to