The Tools You Need
Apart from your favourite text editor to edit your Haskell code, you need the Haskell compiler, GHC, to compile your code.1
As many modern programming languages, Haskell has grown a vibrant ecosystem of third-party packages around it, that can be downloaded and used in your own code. Hackage is the place where these packages are shared with the rest of the community. Finding the package or function in a package that does exactly what you want can be difficult. Thankfully, there is Hoogle, a powerful search engine that lets you search the packages on Hackage for the functions you are looking for. I will give you a quick summary of Hoogle a little later.
Once you write code that relies on the functions in the Haskell standard library and on packages written by others, it can become difficult to make sure that your code keeps compiling even as newer versions of the compiler, of the standard library, and of third-party packages are released. The Haskell Stack is a distribution manager written by a group of developers who use Haskell to develop commercial software. Especially in the commercial domain, it is imperative that builds are reproducible and do not break as a result of new versions of compiler or packages. When using Stack to build your project, you are guaranteed that the version of the compiler and the packages you use all work together seamlessly and correctly, and you continue to build with the same compiler version and package versions you've been using all along, even if newer versions are available. If you want to use newer compiler or package versions, you need to make the conscious choice to do so and accept that your code needs to be adjusted to use, for example, a changed API of a package you rely on. The development of the Haskell Stack has made programming in Haskell much more fun than in the good old days when one had to manage installed packages manually.
Let's look at these tools one at a time.
-
There is no widely used IDE for Haskell. I never felt that this was a major deficiency, but then I also prefer to program using Visual Studio Code when coding in Rust or C++. If you're desperate for an IDE, have a look at Leksah. It's a Haskell IDE, written in Haskell. When I tried it years back, it was in an early stage of development and offered little beyond what VS Code could offer. It may have matured in the meantime. ↩