how about:
reduce(hcat,[f() for j=1:5])
it is less clear, but calls f() the right amount of times. the downside may
be the repeated calls to hcat
On Thursday, August 14, 2014 4:52:07 AM UTC+3, Jacob Quinn wrote:
>
> Ah, I see. Yeah, at least I'm not aware of how to do that with a
> comprehension. You can unroll what a comprehension does and do it like:
>
> z = zeros(3,2)
> for i = 1:3
> z[i,:] = f()
> end
>
>
> It seems like it would be convenient to support syntax like:
>
> [f()... for i = 1:3]
>
> but you might need a way to specify the dimensions of the resulting matrix
> as well.
>
>
> On Wed, Aug 13, 2014 at 9:40 PM, Brendan O'Connor <[email protected]
> <javascript:>> wrote:
>
>> But that calls `f()` on every loop of your comprehension, so it's
>>> probably best to do something like:
>>>
>>> g = f()
>>>
>>> In [13]: [g[i] for i=1:2, j=1:3]
>>>
>>> Out [13]: 2x3 Array{Any,2}:
>>> 3.0 3.0 3.0
>>> 5.0 5.0 5.0
>>>
>>
>> Ah ... I should have said, actually, I don't want a constant value. I
>> wanted f() called 3 times, and its output arranged into a 3x2 matrix.
>>
>> [f()[i] for i=1:2, j=1:3] is clever, but it calls f() 6 times.
>>
>> Brendan
>>
>
>