I wish #Haskell had as well thought out an edition system as #Rust. github.com/rust-lang/rfcs/blob

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!

@acowley How great would Haskell minus (most) extensions plus a Cargo-like build system (independent of Stack and Cabal) with editions be?

#Haskell

Follow

@underlap @acowley There were alternative build systems (like mafia)... I don't know even what is the problem they intended to solve.

Why do you want to replace Cabal?

@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.

@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... :blobcatthink:

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

@underlap @acowley it uses cabal the library, but not the cabal the binary. The naming is unfortunate...

@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 docs.haskellstack.org/en/stabl 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 ah, that's cabal the file format :blob_grinning_sweat:

What would you like instead of that? Use toml and skip the custom format entirely?

Sign in to participate in the conversation
Qoto Mastodon

QOTO: Question Others to Teach Ourselves
An inclusive, Academic Freedom, instance
All cultures welcome.
Hate speech and harassment strictly forbidden.