isovector / reasonablypolymorphic.com

⏳ my math blog
http://reasonablypolymorphic.com
BSD 3-Clause "New" or "Revised" License
23 stars 11 forks source link

blog/century-of-the-fruitbat/index #37

Open utterances-bot opened 1 year ago

utterances-bot commented 1 year ago

Dragging Haskell Kicking and Screaming into the Century of the Fruitbat :: Reasonably Polymorphic

https://reasonablypolymorphic.com/blog/century-of-the-fruitbat/index.html

ColonelPhantom commented 1 year ago

In the Rust community, this is solved by moving breaking changes into editions. rustc remains capable of compiling Rust 2015 code. While upgrading your code is usually trivial, there are some changes like new keywords (such as async/await in Rust 2018) or changed semantics for the panic! macro in Rust 2021.

While something like /= being removed might be a bit harder to deal with across edition boundaries, things like changing the Prelude could be easily done in this way, without breaking interoperability between editions. A crate that uses Rust 2015 can be used in a Rust 2021 project.

Again, I'm not sure how viable it could be in cases like this, but it would allow both an improved new Haskell and also allows old libraries to keep working.