I agree, but they also include hashes.
https://github.com/pypa/pip/issues/4732
You don't need virtual environments when using npm or composer or cargo. They also create lock files with hashes by default. pip still doesn't use lock files. It's subpar compared to other ecosystems.
Your example doesn't help your argument here, as square should be taking `T` instead of `Option<T>`, a good use case for `Option::map`. But if you are speaking about ergonomics of handling Options, it is being improved…
This is a good use case for let-else, however I won't agree with you here on usage of unwrap for the sake of brevity. I will opt for `?` or match instead.
The footgun here is that `unwrap` may be used inappropriately, and from what I see using github code search it's used inappropriately quite often.
You can still use a null, however the point being made here is that null was failed to be included at type level. See these for reference * https://kotlinlang.org/docs/null-safety.html * https://dart.dev/null-safety *…
I've ran into this before, but to be fair I was using Monad Transformers.
> Usually people recommend crates designed to make the experience better but that's a failure in my opinion. I agree, I love Rust, but I'd like to see error handling ergonomics improved. I'd like to see error handling…
> I would think the Err(err) => return Err(err) line needlessly constructs a copy of result It sounds like this is coming from a C++ bias? So please forgive me if this is wrong. Rust, in my experience, favors move…
I think this may be good reference material: http://learnyouahaskell.com/types-and-typeclasses Basically I'm encoding this approach in Java.
This is good news. My wishlist for Java is for null to be illegal for all types unless they are encoded as nullable such as `T?`. Until then, I just use Kotlin and/or Scala when I require JVM.
Right, you can't overload the + operator, and primitives can't be used in generics.
I think in Java, you would need to do a type-class approach. interface Numeric<T> { T zero(); T add(T a, T b); } static <T> T sum(Numeric<T> n, T[] v) { T summer = n.zero(); for (int k = 0; k < v.length; k++) { summer =…
I agree, but they also include hashes.
https://github.com/pypa/pip/issues/4732
You don't need virtual environments when using npm or composer or cargo. They also create lock files with hashes by default. pip still doesn't use lock files. It's subpar compared to other ecosystems.
Your example doesn't help your argument here, as square should be taking `T` instead of `Option<T>`, a good use case for `Option::map`. But if you are speaking about ergonomics of handling Options, it is being improved…
This is a good use case for let-else, however I won't agree with you here on usage of unwrap for the sake of brevity. I will opt for `?` or match instead.
The footgun here is that `unwrap` may be used inappropriately, and from what I see using github code search it's used inappropriately quite often.
You can still use a null, however the point being made here is that null was failed to be included at type level. See these for reference * https://kotlinlang.org/docs/null-safety.html * https://dart.dev/null-safety *…
I've ran into this before, but to be fair I was using Monad Transformers.
> Usually people recommend crates designed to make the experience better but that's a failure in my opinion. I agree, I love Rust, but I'd like to see error handling ergonomics improved. I'd like to see error handling…
> I would think the Err(err) => return Err(err) line needlessly constructs a copy of result It sounds like this is coming from a C++ bias? So please forgive me if this is wrong. Rust, in my experience, favors move…
I think this may be good reference material: http://learnyouahaskell.com/types-and-typeclasses Basically I'm encoding this approach in Java.
This is good news. My wishlist for Java is for null to be illegal for all types unless they are encoded as nullable such as `T?`. Until then, I just use Kotlin and/or Scala when I require JVM.
Right, you can't overload the + operator, and primitives can't be used in generics.
I think in Java, you would need to do a type-class approach. interface Numeric<T> { T zero(); T add(T a, T b); } static <T> T sum(Numeric<T> n, T[] v) { T summer = n.zero(); for (int k = 0; k < v.length; k++) { summer =…