I wish #Haskell had as well thought out an edition system as #Rust. https://github.com/rust-lang/rfcs/blob/master/text/2052-epochs.md
I think it would handle things like replacing `*` with `Type` quite nicely, for example. There would still be the question of the scope of the standard library, for which I’m unaware of an approach that makes everyone happy all the time, but keeping old code cleanly usable is so, so important, particularly for smaller communities!
@underlap @acowley Unless you happen to support Hackage and Stackage the result would be very niche, unusable in anything beyond perhaps online playgrounds. And then users would have to encounter "poor" experience of the real world anyway.
If only we had a library for Common Architecture for Building Applications and Libraries or something like that...
@underlap @acowley Anyway, how adding one more build tool would help?..
We've had `stack` already, with this specific mission of improving user experience. And improve it did. Now we have two concurrent build systems. Meanwhile, users continue to receive the `cabal install whatever` advice and hurt themselves with it.
@dpwiz @acowley The files in the project are the main source of confusion for me. `stack new` creates stack.yaml, package.yaml, and a projectname.cabal file (apparently generated from the package.yaml, but still needing to be checked in, according to .gitignore).
I eventually found https://docs.haskellstack.org/en/stable/stack_yaml_vs_cabal_package_file/ but the explanation is far from clear.
If I'd only used the likes of maven, gradle, bazel, etc. I probably wouldn't have blinked at stack. But using cargo spoiled me.
@underlap @acowley found the discussion about that https://github.com/haskell/cabal/issues/7548
@dpwiz @acowley Because (at least the new user experience of) Cabal is poor compared to Cargo. It may be possible to improve Cabal significantly, but I suspect there's too much inertia.