&gt; I have found Haskell very difficult to use with Cabal and its package management. The reason I went to Haskell was to teach myself functional programming. After struggling and going through 2 books I still felt like I hated Haskell due to making the environment just work. I work in three different locations and to get all 5 computers to work in Haskell was a serious pain.<p>Package management is certainly the worst thing about Haskell at the moment. Just yesterday I had to fight with cabal, and sit through hours of compilation, to build my application with profiling enabled :(<p>There&#x27;s recently been a surge of activity in this area though, which seems to have been driven by FPComplete and consulting with industry:<p>- First there&#x27;s &quot;Stackage&quot;, which is basically a curated version of the package repository Hackage. Anyone can upload a new package to Hackage, and package authors can make breaking changes whenever they like. Stackage takes consistent snapshots of Hackage, where the package versions are known to work together.<p>- Next there&#x27;s &quot;Stack&quot;, which is an alternative UI for Cabal (ie. it replaces the commandline tools, but uses the same libraries and infrastructure). Nice features of stack are that it can fetch&#x2F;install GHC (so &quot;bootstrapping&quot; is much easier), and it doesn&#x27;t use a global package database (cabal has this feature with &quot;sandboxes&quot;, but they&#x27;re opt-in).<p>- Personally, I use Nix for managing Haskell packages. It&#x27;s a bit like stack or cabal sandboxes taken to the extreme, although its Windows support is still pretty experimental. It will fetch pre-built packages from a cache, rather than building stuff locally (as long as you&#x27;re using the defaults, at least).<p>Take a look at <a href="https:&#x2F;&#x2F;www.fpcomplete.com&#x2F;blog&#x2F;2015&#x2F;06&#x2F;stack-0-1-release" rel="nofollow">https:&#x2F;&#x2F;www.fpcomplete.com&#x2F;blog&#x2F;2015&#x2F;06&#x2F;stack-0-1-release</a> for more info.<p>&gt; This lead me to see what else is out there. It lead me to <a href="https:&#x2F;&#x2F;www.coursera.org&#x2F;course&#x2F;proglang" rel="nofollow">https:&#x2F;&#x2F;www.coursera.org&#x2F;course&#x2F;proglang</a> which introduced me to Racket and I loved it and felt that Racket was the perfect fit for me.<p>Racket (and Scheme in general) is also an excellent functional programming language. Having dynamic types and macros makes it a very different beast to Haskell, so it&#x27;s definitely worth learning both :)