4 ms·
> Modularity is something which Haskell people simply do not take seriously Plus, the build/module/packaging/dependency resolution story, even when doing all t
by frowaway001 12y ago
> Modularity is something which Haskell people simply do not take seriously
Plus, the build/module/packaging/dependency resolution story, even when doing all the recommended best practices involving sandboxing Cabal and leveraging Nix are just plain embarrassing.
There are so many smart Haskell people. I don't understand how any of them could consider this clusterf*ck to be remotely acceptable.
- codygman 12y agoWhen using python I use virtualenv. When using Haskell I use cabal sandbox. I rarely have any problems, why is it a clusterf*ck?
- frowaway001 12y agoIn Haskell, sandboxes usually force you to rebuild stuff which you have already built over and over. Anyway, sandboxes are pointless hacks which wouldn't be necessary if things had been done properly from the beginning. They are like Node.JS ... yes, it enables you to develop with JavaScript on the server, but how the hell did you end up with using JavaScript in the first place?!
- codygman 12y agoSandboxes aren't pointless hacks which shouldn't be necessary. It's a lot more difficult for static languages to get right, and solutions like Maven have had tons of work put into them. You say "if things had been done properly from the beginning" implying you know some mistakes that were made. What mistakes were made in the beginning? Do you have any ideas how the problems cabal has could have been avoided? There are very intelligent people working on this problem and it is well known that dependency resolution isn't an easy problem.
- frowaway001 12y ago> solutions like Maven have had tons of work put into them Maven required tons of work because it's written in Java, not because the ideas behind it are advanced in any sense. It's sounds absurd because it's so simple, but the issue is that Cabal/GHC doesn't deal with versioning. Different versions of the same library are not properly treated as different artifacts. That's why everything breaks if you install it into a global namespace. "Great, let's just multiply our namespaces!" is the obvious knee-jerk reaction, but not a great solution. > There are very intelligent people working on this problem That sounds great! Because until now I have mostly seen "very intelligent people" who have been busily in denial that a problem even exists.