Haskell user, here. What precisely bugged you so much about Cabal? I can sympathize with the lack of Windows support. I love Haskell so much I ditched Windows for it, though.
First know that my background is Java so I'm used to write once, run anywhere. Haskell didn't feel this way at all. Also, I shouldn't have specifically named Cabal. My complaint was about my experience with Haskell's ecosystem more than just its dependency management app. That said I find leiningen really easy to use. That may just be because I understand maven though.
My first project attempt was to write a web crawler that processed the data it downloaded. There seemed to be a library that was PERFECT for that named shpider: http://hackage.haskell.org/package/shpider
But, I couldn't install it because it depends on the curl library and the curl library depends on linux binaries. I develop on Windows. The people in the IRC channel kept on telling me the path of least resistance is to switch my OS. But I'm not willing to do that, especially if it's just for a practice project.
I was told I should be using http-conduit (or something) instead. But that was lower level than shpider so not ideal. I tried to install that and I got an error, too. Apparently the project owner had an incorrect config file and it was trying to use a version of the fault library that it was incompatible with (he fixed that the next day which was great. But the only reason I could have figured out my problem is with a team of people on IRC holding my hand through it). I can't blame Cabal for that, but for a complete newbie who has no idea what's going on, it's extremely intimidating.
Long story short, I tried installing ~10 libraries with Cabal and only one installed smoothly. All the others had me googling for obscure forum posts. Sometimes I could "trick" cabal into installing the library but when I'd use it I'd get a runtime error related to a bad install. I've never ever ever had a problem like this with leiningen. But again, I'm experienced with maven.
On top of that, Cabal seems to install everything in a global namespace which scares me. If your Project1 needs LibraryX version 1 and Project2 needs LibraryX version 2 and these versions are incompatible, what do you do? Use something like cabal-dev I was told. But I have no idea what I'm doing with Cabal as it is. If something goes wrong with an abstraction on top of it, I'm totally screwed when it comes to debugging my problem.
I think I get why Haskell did this. Time is precious and if you need something like Curl, your OS has Curl and you don't want to make it your business to rewrite Curl in Haskell, you'd just reuse the OS library. But if I use a different OS, you kind of screwed me.
I love the Haskell language and miss all its lovely features. But if the language requires me to change my OS to develop anything useful, that's a nonstarter.
Yeah I think you're coming from a pretty big write-once run anywhere perspective here. This is especially the case with CURL. Languages like Ruby would have similar issues if they didn't have the force from their communities to bolster the language. It's sort of an unfortunate truth to Haskell that it's development tools aren't so polished as something like RubyGems. That said, I've found that the time I save writing decent Haskell far surpasses the time I spend mucking with its internals, though I've been at it for 5 or so years now. Honestly, though, you're right about the Windows bit. The GHC implementation for Windows relies on tools that I personally would avoid using (MinGW) given the option of using their more mature bretheren in their native environments (LLVM/GCC/Linux/OS X). I've found that probably the best Linux distro to use Haskell with ease has been Arch Linux hands down.
All in all, no, its package system is no RubyGems or what-have-you, but I think the (IMO) language makes it worth it.
HN may hate me forever for saying this, but after using Haskell, I could never imagine switching to a LISP. There's too many thumbnail clippings involved, and not enough types ;-).
> I love the Haskell language and miss all its lovely features. But if the language requires me to change my OS to develop anything useful, that's a nonstarter.
Perhaps you may want to give https://github.com/organizations/Frege a try. It's a bit more powerfull than Haskell 2010, through support for higher rank types. OTOH, due to lack of supporters, the libraries available are far from complete.
But it compiles to Java, and so is interoperable with Java or any other JVM language.
Regarding curl, you can just compile it on windows with msvc. It's not completely trivial, since you also need to compile openssl with it for ssl support, but it's perfectly doable.
The global package index meant (for me) that pretty much everything I installed broke something else I needed. Once they've got the sandbox stuff working (and when you can start a repl in that sandbox, imo it's nearly useless if you can't), it should be much better.