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 >>>> >>> >>>> >>> >>>> >> >>>> > >>>> >>> >>> >
