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 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 As a newbie to Haskell, Stack is nice, but being layered on top of Cabal approximately doubles the learning curve.