環境構築
手っ取り早くHaskellを書いて試すにはWeb上で実装されたREPLを利用するのが便利でしょう。
以上のサービスはHaskellに対応しています。
ローカル環境でHaskellを実行するにはstackを導入すると便利です。
インストール方法は上記リンク先に書いてありますが、Mac OSXであれば
$ brew install haskell-stack
のようにbrewを使っていれるのが簡単です。
Windowsの場合は以下の記事が参考になるかもしれません。
- WindowsでのHaskell開発環境構築(2017年秋版) - モナドとわたしとコモナド
- The easiest way to setup a Haskell environment on Windows
- Haskell-Guide/DevelopmentEnvironment.md at master · lambdaheart/Haskell-Guide
- Windows 上で、 Docker を使って Haskell を簡単に始める方法 - Qiita
- WSL2にHaskell (Stack経由) を入れたときにハマったこと - Qiita
- tilapia/Windows10.md at master · tomjaguarpaw/tilapia
またrustupやpyenvのように複数のGHC, cabalを管理する機能だけを提供してくれるghcupというツールもあります。
ghcupは2020/5/9時点ではWindowsに対応していないので注意してください。
エディタ・IDE
Haskell IDE Engine
- haskell/haskell-ide-engine: The engine for haskell ide-integration. Not an IDE
- Nix で Haskell IDE Engine をシュッと入れる - ryota-ka’s blog
- Haskell IDE Engineのインストールに苦労した (Windows 10) - Qiita
- mpickering - An IDE implemented using reflex
- mpickering - The State of Haskell IDEs
- IDE 2020
- IDE 2020: Haskell Language Server, binaries and installation
- Tweag - Making GHCIDE smarter and faster: a fellowship summary
Legacy
- DanielG/ghc-mod: Happy Haskell Hacking for editors. CI: https://gitlab.com/dxld/ghc-mod/pipelines
- chrisdone/intero
Vim
- begriffs/haskell-vim-now: One-line Haskell Vim install
- Vim用のHaskellインデントプラグインvim-haskell-indentを作りました
- Haskellでimport文をソートするプラグイン vim-haskell-sort-import を作りました
- Connecting Vim with your Haskell repl
- Haskell で +channel 使って Vim とおはなしする
- (失敗)Neovimに移行しつつHaskellの開発環境を整える on Windows
- alx741/vim-yesod
- Vim + Haskell
- Neovim のプラグインを Haskell で書いてみる - Qiita
- neovim-ghci: a fast and interactive Haskell editing experience - asciinema
- 【Haskell (その2) Advent Calendar 2017】Vim から Hoogle の検索が出来るプラグインをつくった【16日目】 - Secret Garden(Instrumental)
- Neovim for Haskell Development - The Mendo Zone
- Haskell, Nix and Vim: Getting started · tblog
- = ale.vimとQuickRunでstack環境を使う - Qiita
- Vim and Haskell in 2019 | Repeat Until Keypressed
- Setting up Neovim for Haskell, as of October 2019
- Vim and Haskell in 2019 | Repeat Until Keypressed
Emacs
- haskell/haskell-mode
- haskellのstackでghc-modを利用時に一部パッケージのimportでエラーとなる
- 気がついたら Emacs の Haskell を勉強する環境が整っていた話 - Diary over Finite Fields
- how-i-use-dante
Visual Studio Code
- Haskell Language Server - Visual Studio Marketplace
- Haskero - Visual Studio Marketplace
- Introducing Haskelly – Haskell extension for Visual Studio Code – Microsoft Faculty Connection
- Setting up a Haskell development environment in minutes in Visual Studio Code | In Absentia
Haskell for Mac
Yi
IntelliJ
- Docker + IntelliJ で楽に実行環境を構築する - Qiita
- IntelliJでHaskell
- IntelliJ (with Stack) as Haskell IDE - YouTube
- IntelliJでHaskellを実行する(haskell stackプロジェクト) - Qiita
- HaskellをIntelliJで使えるようになりました! - Qiita
- IntelliJで”Haskell module can not be created”となるときの対処法 - Qiita
- Another IDEa: Haskell and IntelliJ! — Monday Morning Haskell
- intellij-haskell 1.0-beta44 : haskell
- intellij-haskellの設定方法 (2020/03/15時点) - Qiita
Others
- Leksah
- EclipseFP
- [Haskell-cafe] [ANN] haskell-ide project
- The new haskell-ide repo
- Haskell IDE Engine progress report November 2015
- Haskell IDE Engine progress report for December 2015.
- wandernauta/viskell
- ndmitchell/ghcid
- Project Proposal
- Hello World
- Another Web-based Haskell IDE
- Tidalでライブコーディング! - セットアップ編
- transient-haskell/transient - Running example(s)
- theam/haskell-do: The Haskell code editor focused on interactive development.
- 私のHaskellコーディングスタイルガイド,改行出来るポイントを紹介 - ncaq
- State of Haskell editor/IDE support
- Which tab width do you prefer for Haskell code?
- Explicit vertical alignment in Haskell
- tonsky/FiraCode - Monospaced font with programming ligatures
- [Haskell] [ANN] HyperHaskell – the strongly hyped Haskell interpreter
- ghcid for the win!
- kazu-yamamoto/hhp: Happy Haskell Programming
- hieのインストールに苦労した(Windows10) - Qiita
- fairy-tale-agi-solutions/haskell-editor-setup: Instructions for setting up Haskell editors/IDEs
- Haskell Support in Mainstream IDEs
- Neil Mitchell’s Haskell Blog: One Haskell IDE to rule them all
- Neil Mitchell’s Haskell Blog: Fixing Space Leaks in Ghcide
- pepeiborra/hls-tutorial: A tutorial on writing Haskell Language Server plugins
- Handing over ghcide to the Haskell community - DAML
- Using Haskell as my shell
- codepad
Formatter/Linter
- Haskellの静的解析ツール HLint を使おう
- functor.tokyo – GHC Warnings You Should Use in Addition to -Wall
- Understanding HLint rules
- lspitzner/brittany
- tibbe/haskell-style-guide
- インデントで悩まないための単純な指針
- memfrob.de - Announcing Floskell
- Haskell Style Guide
- Tweag I/O - Ormolu: Format Haskell code like never before
- Ormolu | Monadfix
- Retrie: Haskell refactoring made easy - Facebook Engineering
- Refactoring Large Haskell Codebases Using Facebook Retrie
- Haskell Style Guide :: Kowainik
- stylish-haskellをBlockArgumentsに対応させる - Qiita
- stylish-haskellをHexFloatLiteralsやNumericUnderscoresに対応させる - Qiita
- How Stylish Haskell works
情報検索
- Hoogle - README
- Hayoo!
- Base で定義されている演算子の一覧
- How do you find a function that…
- Search - haskell | Unixstickers* Stackage Serverのちょっとした便利な使い方,Hoogleをブラウザのカスタム検索エンジンに追加しましょう,よく使うパッケージをブックマークする時はPackageRのURLにしましょう - ncaq
- Haskellで外部モジュールを使いたいとき(モジュールimportとパッケージinstall) - Qiita
- Hackage Search Hackage を正規表現で検索できるツール
- Haskell/GHC 記号の意味を検索するためのリファレンス集
Haddoc
- Continuous Haddocks
- 最近のHaskell製パッケージのドキュメント事情について簡単に
- Haddock at your fingertips
- Let’s Write Documentation for Haskell
- haddock に Grid Table 記法が追加されました
- Redesigning Haskell docs - Nuno Alexandre
- Haskell Documentation with Haddock: Wishes’n’Tips :: Kowainik
REPL(GHCi)
- GHCiの基本的な使い方まとめ - Qiita
- ghciでマルチバイト文字をエスケープせず表示させる
- Haskell初心者が直面するghciで起こしがちなエラー4選とその対処法 - Qiita
- ghciでの関数定義 - Qiita
- Rapid - This module provides a rapid prototyping suite for GHCi that can be used standalone or integrated into editors.
- litxio/ptghci: High-powered REPL for Haskell, inspired by IPython
Cabal
- Hackage
- Hackage Dependency Monitor
- kowainik/awesome-cabal: 💫 A curated list of awesome resources for the Haskell Cabal build tool.
- Cabalでビルド時にProtocol Buffersファイルをコンパイルする
- stepcut/hackage-whatsnew
- Uploading Package to Hackage - Vaclav Svejcar personal blog
- The packunused package
- Creating a package on Hackage
- cabal-info: get information from cabal files.
- Announcing cabal new-build: Nix-style local builds
- The cab package
- cabalでドキュメントをhackageにアップロードする
- haskell.org and the Evil Cabal
- cabal new-build is a package manager
- haskell.org and the Evil Cabal
- Follow up: haskell.org and the Evil Cabal
- Updated Hackage mirroring
- Try Backpack: Cabal packages : Inside 214-1E
- Minimal Cabal Files - jpvillaisaza
- TerrorJack/Cabal-playground: Logs the input & output of Cabal hooks. Useful for debugging Cabal build process.
- Better Haskell packages with hpack · taylor.fausak.me
- Use Hpack - e.xtendo.org
- dhall-to-cabal: Compile Dhall expressions to Cabal files
- Introduction to Cabal | Haskell at Work
- Haskell: Build Tools
- Hash Based Package Downloads - part 1 of 2
- Hash Based Package Downloads - part 2 of 2
- SLURP
- SLURP: a Single Liberal Unified Registry of Haskell Packages by simonmar · Pull Request #4 · haskell/ecosystem-proposals
- N Haskell Tools & Packages I wish someone had told me about
- Haskell package checklist
- Version SAT
- Problematic versioning policy
- Conflicting Module Names
- Dear package managers: dependency resolution results should be in version control
- Steps for Releasing a Haskell Package to Hackage
- Why Not Both? – fommil – Medium
- Oleg’s gists - ANN: cabal-fmt
- stack で管理されたプロジェクトを cabal でビルドするために
- cabal の build-tool-depends フィールド
- cabal install コマンドについて
- Colin Woodbury
- 🧰 Making the most of Cabal
- Whirlwind Tour Of Cabal For Beginners | School of FP
- Oleg’s gists - A design for paths in Cabal
- pureblog - Haskell is vulnerable to dependency confusion
- cabal v3でdoctestを使うならwrite-ghc-environment-filesを有効にするといい - Qiita
Nix integration
- 13. Nix Integration — Cabal 3.5.0.0 User’s Guide
- Gabriel439/haskell-nix: Nix and Haskell in production
- Nix ±Cabal
- NixOS/cabal2nix: Generate Nix build instructions from a Cabal file
- Maxfield Chen - Functional Fika — Nix and Haskell
- The working programmer’s guide to setting up Haskell projects
- Channable - Nix is the ultimate DevOps toolkit
Stack
- The Haskell Tool Stack
- Stackage
- Haskellのビルドツール”stack”の紹介
- Stack cookbook – Haskell – Aelve Guide
- Stackでやる最速Haskell Hello world! (GHCのインストール付き!)
- Stackを使って楽しくHaskellスクリプティング
- 仕事で使うHaskell
- AceHack-Structuring your first Haskell project with Stack
- The Cabal/Stack Disambiguation Guide
- stack/GUIDE.md
- Stack at Front Row Education
- Migrating a Project to stack
- How stack can use Docker under the hood
- PRACTICAL HASKELL - GETTING STARTED WITH STACK
- New in-depth guide to stack
- stack - from github to hacking haskell project in no time with stack
- commercialhaskell/stack-templates
- Haskell環境構築_20151013_最新版_1_投稿済み.md
- Getting started with Haskell, stack and spacemacs
- Haskell Stack Mega-Tutorial
- Stack entering stabilization phase
- Haskell tidbits: 24 days of Hackage, 2015: day 1: Introduction and Stack
- What’s the point of Stackage LTS?
- StackでHeskellプロジェクトを作ってみる
- stack 1.0.0が出たので私が初めて使った時からの更新をピックアップ
- reiddraper/ordeal
- Stack, the Haskell Build Tool
- Deploying Haskell for Mac projects on OS X and Linux
- The Stackage data flow
- LTS Haskell: Version your Ecosystem
- stackを使う
- Stackを使ったHaskellのインストール
- Stack を使って Haskell をインストールする
- Why did Stack stop using Shake?
- Stack を使って Haskell したい!!
- さくっとHaskellの開発環境を整える(Stack)
- yamadapc/stack-gh-pages
- Stackage LTS 7 is released
- Static compilation with Stack
- psibi/stackgo
- Scripting in Haskell
- Stack を使って Haskell の Hello World をやってみる
- Haskell 初心者が、stack でベンチマークテストにつまった話(RTS option)
- stackでのライブラリ(library)と実行(executable)ファイルの違い
- 一部パッケージimportでstack buildできない - Qiita
- Stackage design choices: making Haskell curated package sets - Michael Snoyman’s blog
- Hackage Security and Stack - Michael Snoyman’s blog
- Casual Hacking With stack, Reloaded - The Life Monadic
- Stack のbenchmarkとtest - Qiita
- Compose :: Melbourne 2017 - Justin Bedő - BioShake: A Haskell EDSL for Bio-Informatics Pipelines - YouTube
- Tweag I/O - Using Stackage for GHC regression testing
- Haskell Stack とは何をするツールなのか - Qiita
- Haskellのstackによるプロジェクトについて - Qiita
- stack ls コマンドが追加されます
- カスタムスナップショットの紹介
- quchen/stackage-everything: »I want Stackage on an airplane and I have only 3 minutes until takeoff«
- The Task abstraction | no time
- [VIDEO] Build Systems à la Carte by Simon Peyton Jones at ICFP 2018 : haskell
- Haskell Stack のグローバル環境を雑に使う - Qiita
- Haskell Stackでエラー “openFile: inappropriate type (Is a directory) when using mirror “ が出るときの対処法 - Qiita
- Stack (Haskell): Could not find moduleと言われたときの対処 2018年春版 - Qiita
- Dear Haskell it’s not you, it’s your tooling.
- Why Stack is moving its CI to Azure Pipelines
- stack new叩いたらすぐhspecが使えるようにする - Qiita
- 中国でStackを使うには? - Qiita
- しょぼいメモリ環境で Haskell stack build用にswap領域を増やす - Qiita
- Tweag I/O - Bazel, Cabal, Stack: Why choose when you can have them all?
- Casa: Content-Addressable Storage Archive
- Casa and Stack
- a stacker does cabal · tonyday567
- Chris Dornan - hs
- Announcing Stack Lint Extra Deps | Freckle Education
Nix integration
逆引き
- Ubuntu 16 で Stack + GHC がライブラリのリンクに失敗する場合の対処法
- stackで~/.stackの場所を移動する
- stackとdockerでHaskellプログラムを静的リンクする
- stack runghc、ghciでAmbiguous module nameというエラーが出る場合の対処法
- Stack (Haskell): 自分で書いたmoduleをビルドしたい
- Haskell(Stack)でGitHubにあるライブラリを使う方法
- stackのオレオレテンプレートを作って楽をする
- stackとghc-modを一緒に使う時の手順
- Stack (Haskell):
stack new
で自動的に生成されるLICENSEはBSDライセンスである - Stackでextra-depsを自動設定する方法の比較
- stack new した時に出てくるファイルのテンプレートの設定