4 ms·
>there are bounds checking when you access array elements through indexes I wish we didn't need bounds checking; the problem could be solved with dependently t
by ue_ 10y ago
>there are bounds checking when you access array elements through indexes
I wish we didn't need bounds checking; the problem could be solved with dependently typed languages. Unfortunately Rust just panics when you access out of bounds, and doesn't warn you at compile time. Rust isn't really all that impressive.
- tupshin 10y agoBy your own admission, what you are asking for would require dependent typing. I am hugely in favor of rust eventually acquiring such capability, but it would be a huge change, and there are reasons why dependent typing hasn't hit mainstream languages yet.
- GregBuchholz 10y ago>what you are asking for would require dependent typing. I know nothing about Rust, but you might find Oleg Kiselyov's: "Eliminating Array Bound Checking through Non-Dependent Types" interesting. http://okmij.org/ftp/Haskell/eliminating-array-bound-check.lhs http://okmij.org/ftp/Haskell/eliminating-array-bound-check.l... You may also like: http://okmij.org/ftp/Haskell/number-parameterized-types.pdf http://okmij.org/ftp/Haskell/number-parameterized-types.pdf http://okmij.org/ftp/Computation/resource-aware-prog/tfp.pdf http://okmij.org/ftp/Computation/resource-aware-prog/tfp.pdf
- eddyb 10y agoIf that is what I think it is, see https://docs.rs/indexing https://docs.rs/indexing for something similar, crafted from invariance over higher-ranked lifetimes, instead of types. I don't think Rust can ever replicate the Haskell implementation identically (if we had HRTB over types), as type parametrism is gone (see: specialization RFC). However, lifetime parametrism serves a similar role in Rust, and lifetimes are closer to a concept of "instance" than types.
- solidsnack9000 10y agoBy comparison to C, though...