Installing Haskell quick and easy
There are several ways to install Haskell, pick one and let’s waste no time:
Using stack
On Linux or Mac
Open a terminal an paste the following:
curl -sSL https://get.haskellstack.org/ | shFollow the script instructions if any, then setup a Haskell compiler like so:
$ stack setupIf you get a message like “stack command not found” or something along the lines, then probably you need to close an re-open your terminal first.
Now check you have a Haskell compiler, you can verify with:
$ stack ghc --versionIf you see something like:
The Glorious Glasgow Haskell Compilation System, version 8.10.4
Then you’re set!
On Windows
Grab the Windows installer at the official doc page. Or here is the direct link to download (but don’t trustme blindly on that!).
How to uninstall?
On Linux or Mac
Just delete the ~/.stack folder and any ~/.stack-work folders in your projects, example:
$ rm -rf ~/.stackYou may need to delete any line mentioning stack in file ~/.bashrc.
On windows
Same as any other windows program, look for “uninstall programs” after pressing the Windows key.
Using ghcup
On Linux or Mac
Open a terminal and run the following:
$ curl --proto '=https' --tlsv1.2 -sSf https://get-ghcup.haskell.org | shFollow the script instructions, read carefully, if you get asked to install GHC, Cabal or Haskell Language Server, say `Yes please!`. After installation finishes you might need to close and reopen your terminal.
Check your installation with:
$ ghcup listYou should have checkmarks on the recommended versions of GHC, Cabal and Haskell Language Server, but if not, then install them like so:
$ ghcup install ghc 8.10.3 # This installs GHC
$ ghcup install cabal # This installs Cabal
$ ghcup install hls # This installs the Haskell Language ServerCheck again:
$ ghcup listYou should now be all set!
On Windows
ghcup does not work on Windows! (AFAIK). Try Windows Subsystem for Linux (WSL) or installing Linux in a VM.
How to uninstall?
On Linux or Mac
Should be sufficient to delete ~/.cabal and ~/.ghcup folders:
$ rm -rf ~/.cabal ~/.ghcupYou may need to delete any line mentioning ghcup in file ~/.bashrc.
On windows
I don’t know 🤷
Using nix
On Linux or Mac
NOTE If you’re on MacOS Catalina or newer (10.15 or higher) the installation is a little bit more tricky, read the Nix manual section on “macOS Installation” carefully.
For the ones using Linux or MacOS Mojave or older (10.14 or lower) keep following:
$ sh <(curl -L https://nixos.org/nix/install) --daemonFollow the script instructions carefully, after it finishes make sure to close and re-open your terminal so that your shell profile is sourced.
Now you can install Haskell either locally (only for a project) or globally (for your whole user system), you can have both or just one as you wish
Haskell locally for a project
In the folder containing a project (or an empty folder if you’re getting started) create a file called shell.nix with the following contents:
let
pkgs = import <nixpkgs> {};
ghc = pkgs.haskellPackages.ghcWithHoogle (hpks:
with hpks; [
mtl
text
time
aeson
bytestring
containers
scientific
unordered-containers
]);
in
pkgs.stdenv.mkDerivation {
name = "wealth-manager-haskell";
# List non-haskell dependencies as build inputs
buildInputs = [
ghc
pkgs.haskellPackages.cabal-install
pkgs.haskellPackages.haskell-language-server
];
shellHook = ''
eval $(egrep ^export ${ghc}/bin/ghc)
echo "Recommended env vars have been loaded loaded:"
egrep ^export ${ghc}/bin/ghc
'';
}Now, in your terminal head to that folder using cd and once you’re there open a nix shell that will load the file we just created:
$ nix-shellIt will start to download a working GHC version, along with Cabal and the Haskell Language Server, once it finishes, you can verify like this:
$ cabal --version
$ ghc --versionOnce you’re finished playing with Haskell in that project exit the Nix shell with:
$ exit # Or Ctrl+D also worksWhen you want to use Haskell again, just execute nix-shell again from your project directory, only the first time takes longer, subsequent executions are faster since everything will be already set up on your environment.
-
How to uninstall?
If you don’t want anything Haskell related but you still want Nix around, just exit the Nix shell, delete your
shell.nixand run:$ rm shell.nix # This is deleting the file we created $ nix-collect-garbageIf you don’t want anything, not even Nix around, then:
$ sudo rm -rf /nix $ rm -rf ~/.nix*You may need to delete any line mentioning Nix in file
~/.bashrc.
Haskell globally for your system
In this case we don’t need a Nix shell, all we have to do is to install the packages like this:
$ nix-env -f "<nixpkgs>" -iA haskellPackages.ghc haskellPackages.cabal-install haskellPackages.haskell-language-serverYou should now have GHC, Cabal and the Haskell Language Server installed, if not, try closing and re-opening your terminal:
$ cabal --version
$ ghc --versionYou’re set!
-
How to uninstall?
If you don’t want anything Haskell related but you still want Nix around, just uninstall the packages like this:
$ nix-env -f "<nixpkgs>" --uninstall haskellPackages.ghc haskellPackages.cabal-install haskellPackages.haskell-language-server $ nix-collect-garbageIf that doesn’t work, try removing
haskellPackages.prefix on each package.If you don’t want anything, not even Nix around, then:
$ sudo rm -rf /nix $ rm -rf ~/.nix*You may need to delete any line mentioning
nixin file~/.bashrc.
On Windows
nix does not work on Windows! (AFAIK). Try Windows Subsystem for Linux (WSL) or installing Linux in a VM.