{"id":17892456,"url":"https://github.com/simonmichael/haskell-atom-setup","last_synced_at":"2026-03-06T12:04:04.377Z","repository":{"id":138801817,"uuid":"58872514","full_name":"simonmichael/haskell-atom-setup","owner":"simonmichael","description":"How to set up and use the Atom IDE for Haskell development in 2016. 2020: Obsolete, use VS Code instead.","archived":false,"fork":false,"pushed_at":"2020-09-24T15:44:16.000Z","size":14,"stargazers_count":83,"open_issues_count":0,"forks_count":5,"subscribers_count":7,"default_branch":"master","last_synced_at":"2025-06-20T18:10:05.846Z","etag":null,"topics":["haskell","haskell-atom-setup","haskell-ides","howto"],"latest_commit_sha":null,"homepage":"","language":"HTML","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/simonmichael.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2016-05-15T16:38:27.000Z","updated_at":"2023-09-08T17:10:23.000Z","dependencies_parsed_at":null,"dependency_job_id":"47c289ca-738e-41a6-ad95-b73fc0770361","html_url":"https://github.com/simonmichael/haskell-atom-setup","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/simonmichael/haskell-atom-setup","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simonmichael%2Fhaskell-atom-setup","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simonmichael%2Fhaskell-atom-setup/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simonmichael%2Fhaskell-atom-setup/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simonmichael%2Fhaskell-atom-setup/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/simonmichael","download_url":"https://codeload.github.com/simonmichael/haskell-atom-setup/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simonmichael%2Fhaskell-atom-setup/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30175914,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-06T11:48:51.886Z","status":"ssl_error","status_checked_at":"2026-03-06T11:48:51.460Z","response_time":250,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["haskell","haskell-atom-setup","haskell-ides","howto"],"created_at":"2024-10-28T14:37:53.763Z","updated_at":"2026-03-06T12:03:59.366Z","avatar_url":"https://github.com/simonmichael.png","language":"HTML","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003c!-- -*- markdown-toc-user-toc-structure-manipulation-fn:cdr; -*- --\u003e\n[2020: obsolete, use VS Code instead]\n\n\n# Haskell Atom Setup 2016\n\nWhat is the least painful way to get Haskell and a modern, user-friendly development environment set up ?\nBased on my periodic attempts to set up the available Haskell IDEs, and to support newcomers on IRC,\nas of early 2016 it's [stack](http://haskellstack.org) and [Atom](http://atom.io)\n(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](http://haskellformac.com)).\n\nHere are some basic recipes for setting up Haskell and Atom from scratch, on any of the major platforms, as reliably and easily as possible.\nThey briefly note the steps required, and also the results you can expect (something that's often unclear with Haskell IDEs).\nYou 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.\nWith a fast connection/machine and the hints below, it should take less than half an hour, most of that unattended.\n\nThis doc can evolve if you test it yourself and send pull requests (quick feedback via IRC is also welcome).\nNote as of late 2016 I have moved from Atom to Intellij (similar features, more refined and robust)\nand I've stopped updating this doc myself.\n\nIf it is obsolete or there's a much better place for it, let me know.\nI hope you find it useful.\n\nUrl:         \u003chttps://github.com/simonmichael/haskell-atom-setup\u003e  \nCreated:     2016/5/12 by Simon Michael (email:\u003csimon@joyful.com\u003e, freenode:sm)  \nUpdated:     2016/12/26  \nDiscussion:  [#haskell](http://webchat.freenode.net/?channels=haskell), [issues](https://github.com/simonmichael/haskell-atom-setup/issues), haskell-cafe list\n\n\n\u003c!-- markdown-toc start - Don't edit this section. Run M-x markdown-toc-generate-toc again --\u003e\n**Table of Contents**\n\n- [Set up Haskell](#set-up-haskell)\n- [Create a minimal program in terminal](#create-a-minimal-program-in-terminal)\n- [Test your program interactively in terminal](#test-your-program-interactively-in-terminal)\n- [Set up Atom](#set-up-atom)\n- [View your program in Atom](#view-your-program-in-atom)\n- [Test your program interactively in Atom](#test-your-program-interactively-in-atom)\n- [Run terminal commands in Atom](#run-terminal-commands-in-atom)\n- [Create a program, package and project](#create-a-program-package-and-project)\n- [Build/run/install your package](#buildruninstall-your-package)\n- [More on Atom's Haskell support](#more-on-atoms-haskell-support)\n\n\u003c!-- markdown-toc end --\u003e\n\n## Set up Haskell\n1. Install `Stack`, (Haskell build tool): \u003chttp://haskell-lang.org/get-started\u003e  \n2. Add `Stack`'s bin directory to your PATH if possible.\n  * Eg: `echo 'export PATH=\\$HOME/.local/bin:\\$PATH' \u003e\u003e ~/.bashrc`  \n3. Install a default instance of GHC (Haskell compiler) for your user:  \n  * `stack setup`\n\n### Create a minimal program in terminal (Optional)\nin a terminal/command/shell window:\n```\necho 'main = putStrLn \"hello world\"' \u003e hello.hs\nstack ghc hello.hs  # compile the program\n./hello             # run it\n```\n\n### Test your program interactively in terminal (Optional)\n```\nstack ghci\n:load hello.hs\n:main    # or any Haskell expression\n:reload  # after changing hello.hs\n:help\n:quit\n```\n\n\u003c!-- ## Auto-compile your program in terminal --\u003e\n\u003c!-- ``` --\u003e\n\u003c!-- ghcid hello.hs --\u003e\n\u003c!-- ``` --\u003e\n\u003c!-- **you should see:** syntax and type errors displayed whenever hello.hs changes   --\u003e\n\u003c!-- in a stack project (described below), you may need this instead:   --\u003e\n\u003c!-- ``` --\u003e\n\u003c!-- ghcid -c 'stack ghci' --\u003e\n\u003c!-- ``` --\u003e\n\n## Set up Atom\n1. install tools: `stack install ghc-mod hlint stylish-haskell  # slow`  \n2. install Atom (text editor \u0026 IDE): \u003chttp://atom.io\u003e  \n3. start Atom  \n4. install plugins: `Atom Preferences` -\u003e `Install`\n    * `search for haskell`\n        - install `language-haskell`, `ide-haskell`, `ide-haskell-repl` and `haskell-ghc-mod`\n\n    * `search for term3`\n        - install `term3`\n\n5. configure plugins: `Atom Preferences` -\u003e `Packagages`\n  * `ide-haskell`\n    - nothing ?  \n  * `ide-haskell-repl`  \n     - `Command Args`: `ghci`  \n     - `Command Path`: `stack`  # or the stack executable's absolute path, eg /usr/local/bin/stack. Don't use ~.  \n   * `haskell-ghc-mod`  \n     - `Additional Path Directories`: ... # eg on mac: /Users/USERNAME/.local/bin, /usr/local/bin\n\n### View your program in Atom\n1. `File` -\u003e `Open`, select `hello.hs` (or other file you like)\n2. `Haskell IDE` -\u003e `Toggle Panel` hides/shows `Error/Warning/Lint/...` panes  \n\n**With an module open, you should see:**  \n* Syntax or type errors highlighted in place and reported in the `Error` pane  \n* Hhlint cleanup suggestions highlighted in place and reported in the `Lint` pane  \n* Auto-completion when typing both Haskell keywords (`module`, `let`, etc) and local names\n\n#### Troubleshooting\n* `Haskell IDE` -\u003e `Prettify` gives an error:\n  * `stylish-haskell` may not be in your path if Atom was started from GUI. Try starting from terminal (on mac: open -a Atom)\n  * The file parsing failed due to, for example, misplaced code\n\n* if `Haskell IDE` -\u003e `Prettify` does nothing, chances are it is already prettified\n\n### Test your program interactively in Atom\nWhile viewing `hello.hs`, do `Haskell IDE` -\u003e `Open REPL` and after you should see a new pane with a `\\*Main\u003e` prompt.\n\nEnter GHCI commands here using CTRL-enter or CMD-enter:\n\n`:main    # or any Haskell expression`  \n`:reload  # after saving changes in hello.hs`  \n`:help`  \n`:quit`  \n\n### Run terminal commands in Atom\nYou can also run regular GHCI in a terminal pane:\n\n`Packages` -\u003e `Term 3` -\u003e `Open New Terminal In Right Pane` (eg)\n\n## Create a program, package and project\n\n* In the terminal: `stack new hello simple`  \n* In Atom: `File` -\u003e `Open`, select and open the `hello` directory (with no file selected)  \n\n**You should see:**, in the sidebar:\n```\n.stack-work  \nsrc/  \n  Main.hs     # new program, similar to hello.hs. Click to open it  \nhello.cabal   # package \u0026 program properties  \nLICENSE  \nSetup.hs  \nstack.yaml    # project properties\n```\n\n## Build/run/install your package\n\nIn the terminal:  \n\n```\ncd hello             # enter the project directory (if necessary)\nstack build          # build this project's program(s)\nstack exec -- hello  # run this project's hello program in place\nstack install        # install the hello program in ~/.local/bin\n(%USERPROFILE%\\.local\\bin on Windows)\ncd; hello            # runs the installed hello program, if your PATH is set right (see setup)\n```\n\n## More on Atom's Haskell support\n\n* If errors are not highlighted in open files on starting Atom  \n    * `File` -\u003e `Save` will wake it up ([haskell-ghc-mod/#142](https://github.com/atom-haskell/haskell-ghc-mod/issues/142))  \n* If errors are reported but the file compiles without error at the command line  \n    * in multi-package stack projects, haskell-ghc-mod (ghc-mod) requires a workaround ([ghc-mod/#787](https://github.com/DanielG/ghc-mod/issues/787))  \n    * see also \u003chttps://github.com/DanielG/ghc-mod/wiki\u003e for other possible causes\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsimonmichael%2Fhaskell-atom-setup","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsimonmichael%2Fhaskell-atom-setup","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsimonmichael%2Fhaskell-atom-setup/lists"}