The current approach for having a complex Haskell project with dependencies is using stack. While it is suitable for larger projects, we avoid it for our undergrad students, who only need ghc, ghci and small editor support.
We found a subset of VSCode plugins that provide an integrated interpreter, provide type information, autocomplete and even runs (sometimes too strict) hlint on your code automatically. Neither of this plugins requires Stack.
The main issue is that we teach QuickCheck and we need to install it globally. This is far from being straightforward in Windows and MacOS.
In Ubuntu it is quite direct using apt sudo apt-get install hlint haskell-platform libghc-quickcheck2-dev
Here is the solution for the Mac, just make sure to adapt to your own GHC version:
brew cask install cabal-install
ln -s ~/.cabal/store/ghc-8.10.1/package.db ~/.ghc/x86_64-darwin-8.10.1/package.conf.d
cabal install QuickCheck
If you now open ghci
, it will import Test.QuickCheck
successfully.
For reference, here are the plugins that work successfully without any Stack dependencies:
code --install-extension jcanero.hoogle-vscode code --install-extension justusadam.language-haskell code --install-extension hoovercj.haskell-linter code --install-extension dramforever.vscode-ghc-simple code --install-extension meowcolm024.has-go