4 ms·
Haskell Packages for Development
- mlitchard 12y agoGreg Weber gave an awesome talk at BayHac 2014 on just this subject. https://docs.google.com/presentation/d/1suMuLRo1xS5NxWn-L9lGHtVNpOH48F9ZnDyv5PyxEpI/edit?pli=1#slide=id.p https://docs.google.com/presentation/d/1suMuLRo1xS5NxWn-L9lG...
- superduper33 12y agoCareface.
- moomin 12y agoOf course, when I last tried installing stylish-haskell (last week), it insisted on taking non-compatible/broken dependencies. Yes, on a clean environment. When I learn more Haskell, I may succeed to figuring out what's wrong.
- jfischoff 12y agoThe package management story in Haskell, I don't want to say broken, is just too complicated for beginners, err actually everyone. For instance, to install stylish-haskell you will ultimately need the "happy" executable, but cabal is not smart enough to get it for you. I don't know what a "clean" environment means, nor do I know what you mean by "broken dependencies." Did you: mkdir stylish-sandbox cd stylish-sandbox cabal update cabal sandbox init cabal install happy stylish-haskell cabal copy cd .. rm -r stylish-sandbox That might work.
- stefantalpalaru 12y agoDon't blame Haskell for it. On Gentoo with the official 'haskell' overlay it's just a matter of running emerge stylish-haskell
- cordite 12y agoIt still takes a long time when sandboxing if you're on a project using yesod and you get to re-build the entire dependency set for each project.
- jfischoff 12y agoSandboxing is merely a stop-gap to reproducible builds (I hope). Nix style multiple instances of the same version of an installed package will lead to better reuse, thus faster builds. If the fingerprints can be made precise enough, binary caches can be distributed from trusted parties, similar to what other package managers do.
- cordite 12y agoJust a thought, why not have fingerprints be like a Merkle tree? A (naive) example: a built package has the hash derived from the package identity and all dependency hashes at compile / link time.
- jfischoff 12y agoThis is the plan I think, or something like it. Currently package are referred to by unique hash that sort of works this way, but there are few unfortunate restrictions in GHC and cabal that need to be lifted to allow future installations to not conflict with past installations (multiple instances of the same version, right now there can only be one foo-0.1.0.0 even though it also has a unique hash).
- zimbatm 12y agoNote that it's not optimal either, a small variation in a root dependency can trigger the recompilation of the whole tree, even if the change is backward-compatible.
- lomnakkus 12y agoHopefully we can also get real module interfaces[0] in the not-too-distant future so we can at least lessen some of the spurious diamond dependency problems that tend to crop up once in a while. [0] http://plv.mpi-sws.org/backpack/ http://plv.mpi-sws.org/backpack/
- taylorfausak 12y agoI built a template for hi that sets up stylish-haskell, a test suite, an executable, and much more. Check it out: http://taylor.fausak.me/2014/03/04/haskeleton-a-haskell-project-skeleton/ http://taylor.fausak.me/2014/03/04/haskeleton-a-haskell-proj...