Ohhhh, yeah now I see it actually. Took a while for me to grok :)
Thanks! On Sun, May 25, 2014 at 10:21 PM, Kevin Ballard <[email protected]> wrote: > Matthieu's code shows subtraction. It works via addition by making the > input the type that uses addition, and the output the "base" type. > > -Kevin > > On May 25, 2014, at 10:55 AM, Isak Andersson <[email protected]> > wrote: > > Hey, thanks for the reply! > > (minor correction for myself, I meant to say submatrix rather than > cofactor) > > Using Peano numbers is quite an interesting solution.. > > The point of it would be to make arbitrarily sized matrices that will > detect as > many errors as possible at compile time.. > > However. With Peano numbers you can really only add numbers right? Which > makes it problematic in the case of submatrix, where you actually end up > with > a matrix that has one row and one column less than the original. > > I guess you could work around it somehow by adding a Prev type or something > but then you run in to issues when you compare types that got to the same > dimension > through different ways. So you'd have to like make a complicated macro or > something > to find what the number represented by the Peano ish number is.. > > > > On Sun, May 25, 2014 at 7:37 PM, Matthieu Monrocq < > [email protected]> wrote: > >> It's been discussed, but there is still discussion on the best way to >> achieve this. >> >> At the moment, you should be able to get around it using Peano numbers >> [1]: >> >> struct Zero; >> >> struct Succ<T>; >> >> struct Matrix<T, M, N> { >> data: Vec<T>, >> } >> >> fn cofactor<T, M, N>( >> m: Matrix<T, Succ<M>, Succ<N>>, >> row: int, >> col: int >> ) -> Matrix<T, M, N> >> { >> Matrix::<T, M, N>{ data: vec!() } >> } >> >> >> Of course, I would dread seeing the error message should you need more >> than a couple rows/columns... >> >> [1] http://www.haskell.org/haskellwiki/Peano_numbers >> >> >> On Sun, May 25, 2014 at 7:25 PM, Isak Andersson >> <[email protected]>wrote: >> >>> Hello! >>> >>> I was asking in IRC if something like this: >>> >>> fn cofactor(m: Matrix<T, R, C>, row, col: int) -> Matrix<T, R-1, C-1> >>> {...} >>> >>> was possible. I quickly got the response that generics doesn't work with >>> integers. So my question is, is there anyway to achieve something >>> similar? >>> >>> Or would it be possible in the future to do generic instantiation based >>> on more >>> than just types. >>> >>> Thanks! >>> >>> _______________________________________________ >>> Rust-dev mailing list >>> [email protected] >>> https://mail.mozilla.org/listinfo/rust-dev >>> >>> >> > _______________________________________________ > Rust-dev mailing list > [email protected] > https://mail.mozilla.org/listinfo/rust-dev > > >
_______________________________________________ Rust-dev mailing list [email protected] https://mail.mozilla.org/listinfo/rust-dev
