Andy Ferris
Andy Ferris
Yeah right it's kinda tricky! What are the properties that you want for `zero` and `one`, really? I'm going to take a stab... 1. If `T` is [monoidal](https://en.wikipedia.org/wiki/Monoid) under `+`,...
PS Hacker News just referred to this: https://jwkennington.com/blog/algebra-ladder/  I think something similar for Julia but with the arrows being properties implemented in generic functions like `+`, `*`, `zero` and...
Maybe the best we can hope for is this? 1. If `T` is [monoidal](https://en.wikipedia.org/wiki/Monoid) under `+`, such that `+(::T, ::T) --> T`, then I expect `zero(::T) --> T`. 2. In...
Right. Well for now I don't think we _need_ `ZeroArray` or `OneMatrix`, just so long as what we implement here and in Rotations obeys some obvious rules that won't leave...
Yeah that `isequal` thing seems wrong to me. `==` is probably OK? For the record, my monoidal comments referred to concrete types `T` only (these days I'm more interested in...
For some historical context, the general rule of thumb has been if the generated code is O(`length(a)`) then we always unroll (remember it's O(`length(a)`) code *just* to define the tuple,...
I didn't see it? Are you referring to the recursive way the expression is constructed [here](https://github.com/JuliaArrays/StaticArrays.jl/blob/master/src/linalg.jl#L286-L289)? (`Expr` is not an `isbitstype`, and AFAIK interpolation should just be putting a pointer...
I’m not sure. The new lowered IR is linear (intermediate expressions are SSA assignments) - I wonder how fast the transformation is? OTOH I think `+(1,2,3,4,5,6,7,8)` might be slower on...
> So given the linear IR in 0.7, am I right in thinking that something more like Base.mapreduce, https://github.com/JuliaLang/julia/blob/d555a9a3874f4c47e16d1fdcbae4866cc0d3917f/base/reduce.jl#L192-L197, where a value is updated repeatedly, would be the same thing...
Yes. To be clear the current generated code was only ever meant to be the first cut, suitable for things like the 3-vectors and 3x3 matrices I was using at...