Haskell Ghc-mod Visual Studio Code For Mac?

What is the least painful way to get Haskell and a modern, user-friendly development environment set up ?Based on my periodic attempts to set up the available Haskell IDEs, and to support newcomers on IRC,as of early 2016 it's stack and Atom(unless you're on a mac and willing to pay and be in a slightly walled garden, in which case it's Haskell for Mac).

Here are some basic recipes for setting up Haskell and Atom from scratch, on any of the major platforms, as reliably and easily as possible.They briefly note the steps required, and also the results you can expect (something that's often unclear with Haskell IDEs).You don't need any previous Haskell knowledge, but you will need to download things, run terminal commands, wait for builds, edit files and configure settings.With a fast connection/machine and the hints below, it should take less than half an hour, most of that unattended.

Haskell Ghc-mod Visual Studio Code For Mac?

This doc can evolve if you test it yourself and send pull requests (quick feedback via IRC is also welcome).Note as of late 2016 I have moved from Atom to Intellij (similar features, more refined and robust)and I've stopped updating this doc myself.

If it is obsolete or there's a much better place for it, let me know.I hope you find it useful.

Url: https://github.com/simonmichael/haskell-atom-setup
Created: 2016/5/12 by Simon Michael (email:simon@joyful.com, freenode:sm)
Updated: 2016/12/26
Discussion: #haskell, issues, haskell-cafe list

Table of Contents

As required by the Mac App Store, Haskell for Mac is sandboxed. Consequently, Haskell code executed in a Haskell for Mac playground cannot access any data except for Haskell for Mac documents, the app container, and those system files white-listed by the operating system. Extension for Visual Studio Code - Provides language support via ghc-mod in VS Code.

之前換了電腦,整個 Haskell 的 tool chain 要重灌,但有趣的是.我已經記不起當時是怎麼把它灌起來的了 Orz。. 然後你的 Visual Studio Code 的 ghc-mod. See what developers are saying about Visual Studio vs Continuous vs Haskell for Mac. Some developers prefer Visual Studio over Continuous because. Visual Studio Code や Emacs, NeoVim などの様々なエディタに対してインタフェースを提供するために、完全な LSP (Language Server Protocol) をサポートする。 自動補完, 定義へのジャンプ, 型の挿入, 静的解析などの機能を実装するために Intero, ghc-mod, HaRe, hindent などの.

Set up Haskell

  1. Install Stack, (Haskell build tool): http://haskell-lang.org/get-started
  2. Add Stack's bin directory to your PATH if possible.
  • Eg: echo 'export PATH=$HOME/.local/bin:$PATH' >> ~/.bashrc
  1. Install a default instance of GHC (Haskell compiler) for your user:
  • stack setup

Create a minimal program in terminal (Optional)

in a terminal/command/shell window:

Test your program interactively in terminal (Optional)

Set up Atom

  1. install tools: stack install ghc-mod hlint stylish-haskell # slow

  2. install Atom (text editor & IDE): http://atom.io

  3. start Atom

  4. install plugins: Atom Preferences -> Install

    • search for haskell

      • install language-haskell, ide-haskell, ide-haskell-repl and haskell-ghc-mod
    • search for term3

      • install term3
  5. configure plugins: Atom Preferences -> Packagages

  • ide-haskell
    • nothing ?
  • ide-haskell-repl
    • Command Args: ghci
    • Command Path: stack # or the stack executable's absolute path, eg /usr/local/bin/stack. Don't use ~.
  • haskell-ghc-mod
    • Additional Path Directories: ... # eg on mac: /Users/USERNAME/.local/bin, /usr/local/bin

View your program in Atom

  1. File -> Open, select hello.hs (or other file you like)
  2. Haskell IDE -> Toggle Panel hides/shows Error/Warning/Lint/... panes

With an module open, you should see:

  • Syntax or type errors highlighted in place and reported in the Error pane
  • Hhlint cleanup suggestions highlighted in place and reported in the Lint pane
  • Auto-completion when typing both Haskell keywords (module, let, etc) and local names

Troubleshooting

Haskell Ghc-mod Visual Studio Code For Mac Download

  • Haskell IDE -> Prettify gives an error:

    • stylish-haskell may not be in your path if Atom was started from GUI. Try starting from terminal (on mac: open -a Atom)
    • The file parsing failed due to, for example, misplaced code
  • if Haskell IDE -> Prettify does nothing, chances are it is already prettified

Test your program interactively in Atom

Haskell Ghc-mod Visual Studio Code For Mac Cosmetics

While viewing hello.hs, do Haskell IDE -> Open REPL and after you should see a new pane with a *Main> prompt.

Enter GHCI commands here using CTRL-enter or CMD-enter:

:main # or any Haskell expression
:reload # after saving changes in hello.hs
:help
:quit

Run terminal commands in Atom

You can also run regular GHCI in a terminal pane:

Packages -> Term 3 -> Open New Terminal In Right Pane (eg)

Create a program, package and project

  • In the terminal: stack new hello simple
  • In Atom: File -> Open, select and open the hello directory (with no file selected)

Download Visual Studio Code For Windows

You should see:, in the sidebar:

Build/run/install your package

In the terminal:

Git

More on Atom's Haskell support

  • If errors are not highlighted in open files on starting Atom
    • File -> Save will wake it up (haskell-ghc-mod/#142)
  • If errors are reported but the file compiles without error at the command line
    • in multi-package stack projects, haskell-ghc-mod (ghc-mod) requires a workaround (ghc-mod/#787)
    • see also https://github.com/DanielG/ghc-mod/wiki for other possible causes

There are 6,954 packages freely available. Here is a sample of the most common ones:

Visual Studio Code For Mac

bytestringBinary databasePrelude, IO, threads
networkNetworkingtextUnicode text
parsecParser librarydirectoryFile/directory
hspecRSpec-like testsattoparsecFast parser
monad-loggerLoggingpersistentDatabase ORM
template-haskellMeta-programmingtarTar archives
snapWeb frameworktimeDate, time, etc.
happstackWeb frameworkyesodWeb framework
containersMaps, graphs, setsfsnotifyWatch filesystem
hintInterpret HaskellunixUNIX bindings
SDLSDL bindingOpenGLOpenGL graphics system
criterionBenchmarkingpangoText rendering
cairoCairo graphicsstatisticsStatistical analysis
gtkGtk+ libraryglibGLib library
test-frameworkTesting frameworkresource-poolResource pooling
conduitStreaming I/Omwc-randomHigh-quality randoms
QuickCheckProperty testingstmAtomic threading
blaze-htmlMarkup generationcerealBinary parsing/printing
xmlXML parser/printerhttp-clientHTTP client engine
zlibzlib/gzip/rawyamlYAML parser/printer
pandocMarkup conversionbinarySerialization
tlsTLS/SSLzip-archiveZip compression
warpWeb servertext-icuText encodings
vectorVectorsasyncAsync concurrency
pipesStreaming IOscientificArbitrary-prec. nums
processLaunch processesaesonJSON parser/printer
dlistDifflistssybGeneric prog.