In general I think you are making good points. Different parallel syntaxes
for constructing with and without flattening would be a nice feature.

On Wed, Feb 25, 2015 at 6:46 PM, Simon Danisch <[email protected]> wrote:

> So what do I expect from your case?
> [[a,a,a]' ; [a,a,a]']
> b = [a,a,a]'  => some array, which looks comparable to Case 2
> [b ; b] -> independent of b's shape, this should result in
> Array{eltype(b)} and not Array{typeof(b)}, from what I learned in Case 2.
> Otherwise this is quite confusing, as concatenating would also depend on
> the shape, which makes it hard to predict, when something concatenates or
> just constructs.
>

In this case, [b ; b] does indeed always have type Array{eltype(b)} and not
Array{typeof(b)} (unless typeof(b) == Number).


>
> 2015-02-26 0:10 GMT+01:00 Josh Langsfeld <[email protected]>:
>
>> Assuming transposing works, you could do [[a,a,a]' ; [a,a,a]'] which
>> isn't entirely horrible
>>
>> On Wednesday, February 25, 2015 at 5:50:04 PM UTC-5, Simon Danisch wrote:
>>>
>>> Okay... So how do I realize:
>>> a = vec3(...)
>>> [ a a a ; a a a]
>>>
>>> Well, all I think is, that arrays of arrays get treated like second
>>> class citizens, as it is harder to work with them in the same way, as it
>>> would be possible with concatenating ;)
>>> This is especially relevant with FixedSizeArrays coming up, as they
>>> allow for tightly packed array of arrays.
>>> What I mean becomes obvious, if you look at the number of constructors:
>>> [a,b,c] for non concatenating
>>> vs
>>> [a;b;c;], [a b c], [a b c; a b c] (+ some variations) for concatenation
>>>
>>>
>>> 2015-02-25 23:24 GMT+01:00 Jeff Bezanson <[email protected]>:
>>>
>>>> Transposing [vec1, vec2, vec3] will absolutely work. I think the issue
>>>> you saw with it was specific to ImmutableArrays. I don't know why they
>>>> have that behavior.
>>>>
>>>> On Wed, Feb 25, 2015 at 5:21 PM, Simon Danisch <[email protected]>
>>>> wrote:
>>>> > I mean, my whole busyness is about constructing matrices of Vec2/3/4,
>>>> which
>>>> > inherit from DenseArray.
>>>> > So I'm basically forced, if I'm not missing something, to do quite a
>>>> bit of
>>>> > work to get my [vec1 vec2 vec3] going.
>>>> > Especially, as transpose([vec1, vec2, vec3]) doesn't seem to work,
>>>> bug or
>>>> > not isn't known to me.
>>>> >
>>>> > 2015-02-25 23:18 GMT+01:00 Simon Danisch <[email protected]>:
>>>> >>
>>>> >> Well, the issue raised here was, how do you realize non concatening
>>>> [a b
>>>> >> c]? This seems impossible now, even though that there are quite a
>>>> few use
>>>> >> cases for it...
>>>> >>
>>>> >> 2015-02-25 23:13 GMT+01:00 Stefan Karpinski <[email protected]>:
>>>> >>>
>>>> >>> I actually think the plan of [a,b,c] for construction without
>>>> >>> concatenation and [a;b;c] and [a b c] for concatenation is pretty
>>>> good. I no
>>>> >>> longer feel that there's any need for a new bracket like [| |]. The
>>>> thing
>>>> >>> that clicked for me is that [a;] isn't really concatenation at all
>>>> anyway.
>>>> >>>
>>>> >>> On Wed, Feb 25, 2015 at 4:58 PM, Simon Danisch <[email protected]>
>>>>
>>>> >>> wrote:
>>>> >>>>
>>>> >>>> As Julia was the first language to introduce me to this kind of
>>>> >>>> constructs, I'm not sure about your used terms.
>>>> >>>> Concatenate for me would firstly mean, to just connect elements
>>>> (that's
>>>> >>>> at least what the German translation suggests), which I would
>>>> apply to the
>>>> >>>> process of putting the elements together into one array. The
>>>> elements in my
>>>> >>>> case are the Vectors.
>>>> >>>> You seem to use it as synonymous with concatenation + flattening
>>>> >>>> (sticking to the function names I guess).
>>>> >>>> I'd say [a,b] is supposed to concatenate, but shouldn't flatten,
>>>> right?
>>>> >>>> So yes, different syntax for concatenating, and
>>>> concatenating+flattening
>>>> >>>> would make this case much, much clearer.
>>>> >>>> Then it's not this fuzzy magic thing, that sometimes happens and
>>>> >>>> sometimes not and both clearly encapsulates a concept and use the
>>>> same basic
>>>> >>>> syntax.
>>>> >>>> So:
>>>> >>>> [vec, vec] => [vec, vec] # With optional typing, ensuring that you
>>>> don't
>>>> >>>> end up with Any[]
>>>> >>>> [vec vec] => [vec vec]  # With optional typing, ensuring that you
>>>> don't
>>>> >>>> end up with Any[]
>>>> >>>>
>>>> >>>> [| vec, vec |] => [el1, el2, el3, el4, ...]# With optional typing,
>>>> >>>> ensuring that you don't end up with Any[]
>>>> >>>> [| vec vec |]  => [el el2 ; el3 el4]# With optional typing,
>>>> ensuring
>>>> >>>> that you don't end up with Any[]
>>>> >>>>
>>>> >>>> I do think, that this is very clear and consistent and doesn't
>>>> leave
>>>> >>>> anything in doubt!
>>>> >>>>
>>>> >>>>
>>>> >>>> Am Mittwoch, 25. Februar 2015 19:00:01 UTC+1 schrieb Simon Danisch:
>>>> >>>>>
>>>> >>>>> Hi there,
>>>> >>>>> I thought default concatenation was deprecated, to make it easier
>>>> to
>>>> >>>>> create arrays of arrays... But it became rather impossible and
>>>> confusing in
>>>> >>>>> the horizontal case, from what I see.
>>>> >>>>> Is there really not a single method left from the few ways in
>>>> 0.35 of
>>>> >>>>> creating a horizontal vector of vectors?
>>>> >>>>> 0.4:
>>>> >>>>>
>>>> >>>>> https://gist.github.com/SimonDanisch/6972c1c090c608738e83#file-
>>>> cat0-4-jl
>>>> >>>>> 0.3.5:
>>>> >>>>>
>>>> >>>>> https://gist.github.com/SimonDanisch/058ef76b2583c620b667#file-
>>>> cat3-5-jl
>>>> >>>>>
>>>> >>>>> Am I missing something, or is this a bug?!
>>>> >>>>>
>>>> >>>>> Best,
>>>> >>>>> Simon
>>>> >>>
>>>> >>>
>>>> >>
>>>> >
>>>>
>>>
>>>
>

Reply via email to