<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ja">
	<id>https://wiki.archlinux.jp/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=E-kwsm</id>
	<title>ArchWiki - 利用者の投稿記録 [ja]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.archlinux.jp/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=E-kwsm"/>
	<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php/%E7%89%B9%E5%88%A5:%E6%8A%95%E7%A8%BF%E8%A8%98%E9%8C%B2/E-kwsm"/>
	<updated>2026-04-12T04:02:55Z</updated>
	<subtitle>利用者の投稿記録</subtitle>
	<generator>MediaWiki 1.44.3</generator>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=Haskell&amp;diff=40560</id>
		<title>Haskell</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=Haskell&amp;diff=40560"/>
		<updated>2025-07-19T23:08:26Z</updated>

		<summary type="html">&lt;p&gt;E-kwsm: haskell-brittany&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:プログラミング言語]]&lt;br /&gt;
[[en:Haskell]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|Haskell パッケージガイドライン}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
&lt;br /&gt;
[[Wikipedia:ja:Haskell|Wikipedia]] から:&lt;br /&gt;
:[https://www.haskell.org Haskell] は、型推論と遅延評価を備えた汎用の静的型付け純粋関数型プログラミング言語です。教育、研究、および産業用途に適するように開発され、型安全な演算子オーバーロードを可能にする型クラスなど、数多くの先進的なプログラミング言語機能を先駆けて採用しました。Haskell の主な実装は Glasgow Haskell Compiler (GHC) であり、その名前は論理学者 Haskell Curry に由来しています。&lt;br /&gt;
&lt;br /&gt;
== インストール ==&lt;br /&gt;
&lt;br /&gt;
Haskell のインストールにはいくつかの選択肢があります。そのうちのひとつは Arch Linux によってサポートされているものであり、その他は Haskell によって公式にサポートされており、どの Linux ディストリビューションでも利用可能です。&lt;br /&gt;
&lt;br /&gt;
バージョン [https://gitlab.archlinux.org/archlinux/packaging/packages/ghc/-/commit/ced89ede2cb41cd51e9138a643509bbb6d8854cd 8.0.2-1] 以降、Arch の {{Pkg|ghc}} パッケージおよび &#039;&#039;extra&#039;&#039; リポジトリ内のすべての [https://archlinux.org/packages/?q=haskell haskell-*] パッケージは、動的リンクされたライブラリのみを提供するようになりました。&lt;br /&gt;
&lt;br /&gt;
動的リンクを使用すると、通常はビルドが高速化し、ディスクやRAMの使用量が削減されます(複数の Haskell プログラム間でページを共有するため)また、異なる GHC バージョン間の混在に伴うトラブルから解放されます。このため、エンドユーザー向けアプリケーションの管理には、[[pacman]] と [[公式リポジトリ]] を使用することが推奨されます。&lt;br /&gt;
しかし、これには欠点もあります。GHC、{{Pkg|ghc-libs}}、または[https://archlinux.org/packages/?q=haskell haskell-*] パッケージのアップデートごとに、ソースからインストールしたすべてのツールが動作しなくなるという点です。これは、GHC でコンパイルされたライブラリが安定した [[Wikipedia:Application binary interface|ABI]] を提供しないためです。そのような壊れたバイナリを実行すると、通常次のようなメッセージが表示されます。&lt;br /&gt;
&lt;br /&gt;
{{ic|error while loading shared libraries: libHS...so: cannot open shared object file: No such file or directory}}&lt;br /&gt;
&lt;br /&gt;
これを修正するには、壊れたツールを再構築して再インストールし、新しいライブラリに再リンクします。&lt;br /&gt;
&lt;br /&gt;
{{Note|Arch が Haskell パッケージで動的リンクに移行した理由について詳しい説明は、この [https://www.reddit.com/r/linux/comments/9emwtu/arch_linux_ama/e5qssdz メンテナーの回答] をご覧ください。}}&lt;br /&gt;
&lt;br /&gt;
一方、静的リンクは一般的に管理が容易であり、依存関係の更新後にすべてのツールをソースから再ビルドする必要がなく、現在のところ GHC によってより良くサポートされています。このため、ローカル開発においては静的リンクが推奨される優先オプションとなっています。&lt;br /&gt;
&lt;br /&gt;
ただし、動的リンクを使用したい場合は、GHC、Cabal、そして Stack をそれに対応するよう設定する必要があります。デフォルトでは静的リンクが使用されるため、そのままでは動的リンクが成功しません。&lt;br /&gt;
&lt;br /&gt;
* Arch の [[公式リポジトリ]] から [[pacman]] を使用して Haskell をインストールするには、[[#ネイティブインストール]] を読み進めてください。ただし、これによりシステムに数百の {{ic|haskell-*}} パッケージがインストールされる可能性があることに注意してください。&lt;br /&gt;
* それ以外の場合は、[[#代替インストール]] セクションに進んでください。&lt;br /&gt;
&lt;br /&gt;
{{Pkg|ghc}} ([[公式リポジトリ]] から) を静的リンクで使用することは可能ですが、設定がより複雑になります。[[#静的リンク]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
== ネイティブインストール ==&lt;br /&gt;
&lt;br /&gt;
Haskell を使用するには、次のパッケージを [[インストール]] します。&lt;br /&gt;
&lt;br /&gt;
# {{Pkg|ghc}} - Haskell コンパイラ。いくつかの [https://www.haskell.org/haskellwiki/Implementations 実装] がありますが、最もよく使われている (現在では &#039;&#039;事実上&#039;&#039; リファレンスとなっている) のは [https://www.haskell.org/ghc GHC] (Glasgow Haskell Compiler) です。&lt;br /&gt;
# {{Pkg|cabal-install}} または {{Pkg|stack}} です。- GHC に依存して Haskell ソースをコンパイルするビルドツール。[https://www.haskell.org/cabal Cabal] は依存関係の解決と [https://hackage.haskell.org Hackage] (Haskell コミュニティのオープンソースソフトウェアの中央パッケージアーカイブ) からのソースパッケージに焦点を当てた古典的なビルドツールです。[https://www.haskellstack.org Stack] は、[https://www.stackage.org Stackage] (Hackage の安定したサブセットで、互いにうまく動作することが知られているパッケージのキュレーションセット (スナップショット) を提供する) のキュレーションされたスナップショットとソースパッケージに焦点を当てた別のビルドツールです。&lt;br /&gt;
&lt;br /&gt;
{{Tip|Cabal と Stack はどちらも安定した成熟したビルドツールです。Haskell 開発者の多くは Cabal を使用していますが、Stack を好む開発者もいます。どのツールを選択すればよいかわからない場合は、両方をインストールして、どちらが最適であるかを確認してください。}}&lt;br /&gt;
&lt;br /&gt;
== 設定 ==&lt;br /&gt;
&lt;br /&gt;
バージョン [https://github.com/archlinux/svntogit-community/commit/7a948cdfb808afd3ce6f93047ae0dc1778e79f9f 8.0.2-1] 以降、&#039;&#039;extra&#039;&#039; に含まれる Arch {{Pkg|ghc}} パッケージと全ての [https://archlinux.org/packages/?q=haskell haskell-*] パッケージは動的にリンクされるライブラリのみを提供します。そのため、リンクに成功するためには GHC, Cabal, Stack を動的リンクに設定する必要があります。&lt;br /&gt;
&lt;br /&gt;
動的リンクを使用すると、通常、(実行中の複数の Haskell プログラム間でページを共有することにより) ビルドが高速化され、ディスクと RAM の使用量が削減され、GHC 間の混合エラーのトラブルシューティングから解放されます。しかし、これには独自の欠点もあります。それは、{{Pkg|ghc}}、{{Pkg|ghc-libs}}、または [https://archlinux. org/packages/?q=haskell haskell-*] パッケージは、GHC でコンパイルされたライブラリが安定した [[Wikipedia:ja:アプリケーションバイナリインタフェース|ABI]] を提供しないためです。このような壊れたバイナリを実行すると、通常のメッセージ {{ic|error whileloadingsharedlibraries:libHS...so:cannotopensharedobjectfile:No such file or directory}} が表示されます。これを修正するには、壊れたツールを再構築して再インストールし、新しいライブラリに再リンクします。&lt;br /&gt;
&lt;br /&gt;
一方、静的リンクは一般に保守が容易で、依存関係を更新するたびにすべてのツールをソースから再構築する必要がありません。これらの理由から、静的リンクは、パッケージシステム外のローカル開発では多くの場合推奨されるオプションです。  静的リンクを希望する場合、詳細については [[Haskell#静的リンク|静的リンク]] または [[Haskell#代替インストール|代替インストール]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
{{Note|Arch が Haskell パッケージの動的リンクに移行した理由の詳細な説明については、この [https://www.reddit.com/r/linux/comments/9emwtu/arch_linux_ama/e5qssdz メンテナーの返答] を参照してください。}}&lt;br /&gt;
&lt;br /&gt;
=== GHC を直接呼び出す ===&lt;br /&gt;
&lt;br /&gt;
正常にリンクするには、{{ic|-dynamic}} フラグを GHC に渡す必要があります。次のファイルで試すことができます。&lt;br /&gt;
&lt;br /&gt;
{{hc|Main.hs|2=&lt;br /&gt;
main = putStrLn &amp;quot;Hello, World&amp;quot;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
次のようにコンパイルして実行します。&lt;br /&gt;
&lt;br /&gt;
{{hc|&lt;br /&gt;
$ ghc -dynamic Main.hs&lt;br /&gt;
$ ./Main|&lt;br /&gt;
Hello, World&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Cabal を動的リンク用に構成する ===&lt;br /&gt;
&lt;br /&gt;
まず、次のコマンドを実行して、Hackage からパッケージの最新リストをダウンロードし、グローバル設定ファイル {{ic|~/.cabal/config}} (または、{{ic|$CABAL_CONFIG}} が指すファイル) を作成します。&lt;br /&gt;
&lt;br /&gt;
 $ cabal update&lt;br /&gt;
&lt;br /&gt;
{{Tip|定期的に {{ic|cabal update}} を実行して、ローカルのパッケージと依存関係のリストを Hackage の最新バージョンと同期することをお勧めします。}}&lt;br /&gt;
&lt;br /&gt;
Cabal を動的リンク用に設定するには、{{ic|~/.cabal/config}} 内の次のオプションのコメントを解除して編集します。&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.cabal/config|&lt;br /&gt;
library-vanilla: False&lt;br /&gt;
shared: True&lt;br /&gt;
executable-dynamic: True&lt;br /&gt;
program-default-options&lt;br /&gt;
  ghc-options: -dynamic&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
* {{ic|library-vanilla: False}} は静的ライブラリの作成を抑制します (プロジェクトにライブラリが含まれている場合)&lt;br /&gt;
* {{ic|shared: True}} は共有ライブラリの作成を有効にします(プロジェクトにライブラリが含まれている場合)&lt;br /&gt;
* {{ic|executable-dynamic: True}} は実行ファイルにダイナミックリンクを使用します (プロジェクトに実行ファイルが含まれている場合)&lt;br /&gt;
* {{ic|ghc-options: -dynamic}} は GHC の全ての呼び出しに {{ic|-dynamic}} フラグを追加します (例えば、パッケージが自明でない{{ic|Setup.hs}} を持っている場合)&lt;br /&gt;
&lt;br /&gt;
=== 動的リンク用のスタックの設定 ===&lt;br /&gt;
&lt;br /&gt;
{{ic|stack setup}} コマンドを使用してスタックを初期化し、グローバル設定ファイル {{ic|~/.stack/config.yaml}} を作成できます。デフォルトでは、スタックは最初の呼び出し時に独自のバージョンの GHC を隔離された場所に自動的にダウンロードします。代わりにスタックにシステム GHC インストールを使用させるには、{{ic|--system-ghc}} フラグと {{ic|--resolver}} フラグを指定して {{ic|stack setup}} を実行します。&lt;br /&gt;
&lt;br /&gt;
 $ stack setup --system-ghc --resolver &#039;&#039;resolver&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
システムの GHC と互換性のあるリゾルバーを指定する必要があることに注意してください。それ以外の場合、スタックは {{ic|--system-ghc}} フラグを喜んで無視し、GHC の独自のコピーをダウンロードします。システム GHC のバージョンは、{{ic|ghc --version}} コマンドを使用して確認できます。&lt;br /&gt;
&lt;br /&gt;
{{hc|$ ghc --version|&lt;br /&gt;
The Glorious Glasgow Haskell Compilation System, version 8.10.2&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
次に、[https://www.stackage.org Stackage] Web サイトにアクセスし、システムの GHC バージョンに一致する適切な長期サポート (LTS) または夜間スナップショットを選択します。コマンドラインの {{ic|--resolver}} フラグに対して選択したスナップショットを使用します。例:{{ic|--resolver lts-16.15}} または {{ic|--resolver nightly-2020-09-01}}&lt;br /&gt;
&lt;br /&gt;
Stackage は通常、新しい GHC リリースより遅れます。システム GHC のスタックスナップショットがまだリリースされていない場合があります。この場合、GHC の以前のマイナーバージョンのスナップショットを選択するか、Haskell インストールを一時的にダウングレードして、新しい GHC リリースのサポートが最終的に Stackage に提供されるまで待つことをお勧めします。&lt;br /&gt;
&lt;br /&gt;
動的リンク用にスタックを構成するには、次のスニペットを {{ic|~/.stack/config.yaml}} に追加します。&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.stack/config.yaml|&lt;br /&gt;
# Stop downloading GHCs into isolated locations under ~/.stack.&lt;br /&gt;
install-ghc: false&lt;br /&gt;
&lt;br /&gt;
# Allow Stack to pick the system GHC (false by default).&lt;br /&gt;
system-ghc: true&lt;br /&gt;
&lt;br /&gt;
# Allow to use, say, Stackage snapshot for GHC 8.8.2 with system GHC 8.8.3.&lt;br /&gt;
compiler-check: newer-minor&lt;br /&gt;
&lt;br /&gt;
# Add the -dynamic flag to every invocation of GHC.&lt;br /&gt;
ghc-options:&lt;br /&gt;
  &amp;quot;$everything&amp;quot;: -dynamic&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Haskell パッケージの管理 ==&lt;br /&gt;
&lt;br /&gt;
Haskell のライブラリと実行可能ファイルのほとんどは、Hackage および Stackage から入手できるソースパッケージの単位で配布されます。&lt;br /&gt;
&lt;br /&gt;
他のコンパイル言語では一般的なことですが、多くの人気のある Haskell パッケージは、事前構築された形式で公式 Arch リポジトリから入手できます。いくつかの追加パッケージは [[AUR]] からインストールできます。&lt;br /&gt;
&lt;br /&gt;
GHC、ライブラリ、およびツールをインストールするには [[pacman]] を使用することが推奨されますが、ある時点で、Hackage/Stackage から直接 Haskell パッケージをインストールしたり、ソースから独自の (または他の人の) パッケージをコンパイルしたくなるかもしれません。これを行うには、Cabal または Stack が必要になります。&lt;br /&gt;
&lt;br /&gt;
次の表は、さまざまなパッケージ管理スタイルの長所と短所をまとめたものです。&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! &#039;&#039;&#039;方法&#039;&#039;&#039;&lt;br /&gt;
! &#039;&#039;&#039;良い点&#039;&#039;&#039;&lt;br /&gt;
! &#039;&#039;&#039;悪い点&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| [[公式リポジトリ]] || ArchLinux 開発者が運営、パッケージのバージョンの整合性に問題なし、コンパイル済み || 利用できるパッケージの数が限られる、動的ライブラリのみ&lt;br /&gt;
|-&lt;br /&gt;
| [[#cabal-install|cabal-install]] || 全てのパッケージが利用可能、root 権限が不要 || インストール先がホームフォルダ、{{Pkg|cabal-install}} [https://ivanmiljenovic.wordpress.com/2010/03/15/repeat-after-me-cabal-is-not-a-package-manager はパッケージマネージャではない]、パッケージのバージョンの整合性に問題がある可能性 (別名 [http://www.haskell.org/haskellwiki/Cabal/Survival#What_is_the_difficulty_caused_by_Cabal-install.3F cabal hell])&lt;br /&gt;
|-&lt;br /&gt;
| [[#stack|stack]] || (Stackage にある) 全てのパッケージが利用可能、root 権限が不要 || インストール先がホームフォルダで、バージョンがスナップショットに固定、特定のパッケージを削除するのは難しい&lt;br /&gt;
|-&lt;br /&gt;
| [[Arch User Repository]] || 始めるのが簡単 || パッケージのメンテナンスがなくなる可能性、パッケージのバージョンの整合性に問題がある可能性&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== cabal ===&lt;br /&gt;
&lt;br /&gt;
{{Note|Haskell では、&#039;&#039;cabal&#039;&#039; という用語は次のいずれかを指します。:&lt;br /&gt;
* Haskell パッケージとその依存関係を記述する Cabal ファイルフォーマット;&lt;br /&gt;
* Cabal ファイルフォーマットで動作する Cabal ライブラリ;&lt;br /&gt;
* Haskell パッケージをビルドするために Cabal ライブラリを使用する {{ic|cabal}} コマンドラインツール ({{Pkg|cabal-install}} パッケージで提供されます)&lt;br /&gt;
この記事の文脈では、&#039;&#039;Cabal&#039;&#039; は通常、特に指定がない限り {{ic|cabal}} コマンドラインツールを意味します。}}&lt;br /&gt;
&lt;br /&gt;
Cabal は Haskell の &amp;quot;オリジナル&amp;quot; のビルドシステムです。Hackage で見つかるライブラリやツールのほとんどは、Cabal 経由でインストールできます。&lt;br /&gt;
&lt;br /&gt;
==== パッケージのインストール ====&lt;br /&gt;
&lt;br /&gt;
Cabal によってインストールされたユーザー全体の実行可能ファイルを実行するには、{{ic|~/.cabal/bin}} を {{ic|$PATH}} [[環境変数]] に追加する必要があります。&lt;br /&gt;
&lt;br /&gt;
 PATH=&amp;quot;$HOME/.cabal/bin:$PATH&amp;quot;&lt;br /&gt;
&lt;br /&gt;
次のコマンドを実行して、Hackage パッケージとそのすべての依存関係を 1 つのステップでインストールします。&lt;br /&gt;
&lt;br /&gt;
 $ cabal install --ghc-options=-dynamic &#039;&#039;package&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{Note|2020年10月現在、Cabal は {{ic|~/.cabal/config}} の {{ic|ghc-options}} を無視し、{{ic|build-type: Custom}} を使ってパッケージをビルドしている間、{{ic|~/.cabal/config}} の {{ic|ghc-options}} を無視します。そのため、コマンドラインで {{ic|1=--ghc-options=-dynamic}} フラグを指定する必要があります。そうしないと {{ic|setup.hs}} で {{ic|Could not find module &#039;Prelude&#039; There are files missing in the &#039;base-...&#039; package}} のようなビルドエラーが発生するかもしれません。}}&lt;br /&gt;
&lt;br /&gt;
Haskell パッケージをソースからビルドしてインストールすることもできます。これを行うには、パッケージディレクトリから次のコマンドを実行します。&lt;br /&gt;
&lt;br /&gt;
 $ cabal install --ghc-options=-dynamic&lt;br /&gt;
&lt;br /&gt;
各 Cabal パッケージは、[https://pvp.haskell.org パッケージ バージョン管理ポリシー] (PVP) に従って、依存関係のリストとそのバージョン制約を {{ic|.cabal}} ファイルに指定する必要があります。パッケージのインストール中に、Cabal はすべての制約を満たす一連の依存関係を見つけようとします。このプロセスは &#039;&#039;依存関係の解決&#039;&#039; と呼ばれます。&lt;br /&gt;
&lt;br /&gt;
スタックが存在するのには理由があります。cabal は初心者との間に多くの軋轢を生むことで知られています。ほとんどの場合、依存関係の解決はうまく機能しますが、失敗する場合もあります。この場合、問題の原因を突き止め、問題のある依存関係を解決する方法について Cabal にヒントを与える必要があります。たとえば、場合によっては、Cabal がパッケージの PVP によって規定された依存関係の上限を無視できるようにするために、{{ic|1=cabal install --allow-newer --ghc-options=-dynamic &#039;&#039;package&#039;&#039;}} と言う必要があります。バージョンを変更し、パッケージ作成者が許可したものよりも新しい依存関係を持つパッケージを効果的にインストールします。  あまり適切に管理されていないパッケージの場合は、さらに面倒になります。別の例については、Idris (Haskell で書かれた別のプログラミング言語) のインストールに関する [https://groups.google.com/d/msg/idris-lang/h2uWYmqHcc0/5k0jNmQ3BAAJ このスレッド] を参照してください。{{ic|--allow-newer}} および {{ic|1=--constraint=&#039;haskeline &amp;lt; 0.8.0.0&#039;}} コマンドラインフラグを使用してコンパイルを成功させます。&lt;br /&gt;
&lt;br /&gt;
==== パッケージの削除 ====&lt;br /&gt;
&lt;br /&gt;
簡単な方法はありません。  Cabal はこの機能をサポートしていませんが、[https://github.com/phadej/cabal-extras#cabal-store-gc cabal-store-gc] のような外部ツールがあります。&lt;br /&gt;
&lt;br /&gt;
ユーザー全体の Haskell パッケージ システム全体を再インストールするには、{{ic|~/.cabal}} と {{ic|~/.ghc}} を削除して、最初から始めます。これは、GHC をアップグレードするときに必要になることがよくあります。&lt;br /&gt;
&lt;br /&gt;
より正確に行うには、{{ic|ghc-pkg unregister &#039;&#039;package&#039;&#039;}} または {{ic|ghc-pkg hide &#039;&#039;package&#039;&#039;}}/{{ic|ghc-pkg expose &#039;&#039;package&#039;&#039;}} を [https://downloads.haskell.org/ghc/8.10.2/docs/html/users_guide/packages.html#package-databases user package database] 上で直接使うことができます。しかし、どちらもファイルを削除しません。&lt;br /&gt;
&lt;br /&gt;
=== Stack ===&lt;br /&gt;
&lt;br /&gt;
Stack は、Haskell パッケージを管理するためのもう 1 つのツールです。それは cabal とは少し異なる目標を持ち、少し異なる哲学を持っています。これは内部で Cabal ライブラリを使用し、Hackage と統合します。ただし、スナップショットが厳選され、連携して適切に動作するパッケージが含まれることを約束して、独自のパッケージ (スナップショット) リポジトリを Stackage 上に維持します。&lt;br /&gt;
&lt;br /&gt;
==== パッケージのインストール ====&lt;br /&gt;
&lt;br /&gt;
デフォルトの設定では、Stack はコンパイル済みの実行ファイルを {{ic|~/.local/bin}} にインストールします。このディレクトリをシェル設定ファイルの {{ic|$PATH}} 環境変数に追加してください。例えば {{Pkg|bash}} なら {{ic|~/.bashrc}}、{{Pkg|zsh}} なら {{ic|~/.zshrc}} です:&lt;br /&gt;
&lt;br /&gt;
 export PATH=&amp;quot;$HOME/.local/bin:$PATH&amp;quot;&lt;br /&gt;
&lt;br /&gt;
次のコマンドを実行して、Stackage パッケージをダウンロード、ビルド、インストールします。&lt;br /&gt;
&lt;br /&gt;
 stack install &#039;&#039;package&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{Note|2020 年 10 月現在 Stackは、[https://github.com/commercialhaskell/stack/issues/3409 ignores] {{ic|~/.stack/config.yaml}} から {{ic|ghc-options}} を {{ic|Setup.hs}} ビルド時に無視します。もし {{ic|Setup.hs}} で {{ic|Could not find module &#039;Prelude&#039; There are files missing in the &#039;base-...&#039; package}} のようなビルドエラーが発生したら、{{Pkg|ghc-static}} パッケージをインストールしてみてください。}}&lt;br /&gt;
&lt;br /&gt;
パッケージディレクトリから次のコマンドを実行して、ソースから Haskell パッケージをビルドしてインストールすることもできます。&lt;br /&gt;
&lt;br /&gt;
 stack install --resolver &#039;&#039;resolver&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{ic|stack setup}} コマンドで使用したものと同じリゾルバーを指定する必要があることに注意してください。&lt;br /&gt;
&lt;br /&gt;
==== パッケージの削除 ====&lt;br /&gt;
&lt;br /&gt;
スタックは &amp;quot;アンインストール&amp;quot; 操作をサポートしていません。&lt;br /&gt;
&lt;br /&gt;
ユーザー全体の Haskell パッケージシステム全体を再インストールする場合は、{{ic|~/.stack}} ディレクトリを削除して、最初から始めてください。これは、GHC をアップグレードするときに必要になることがよくあります。&lt;br /&gt;
&lt;br /&gt;
== 開発ツール ==&lt;br /&gt;
&lt;br /&gt;
=== ツール ===&lt;br /&gt;
&lt;br /&gt;
==== haskell-language-server ====&lt;br /&gt;
&lt;br /&gt;
[https://github.com/haskell/haskell-language-server haskell-language-server] は、Haskell の [https://microsoft.github.io/language-server-protocol 言語サーバープロトコル] (LSP) 実装です。これは、コード補完、&amp;quot;定義に移動&amp;quot;、ホバーに関するドキュメント、リンティング、書式設定、または LSP と統合されたエディターのリファクタリングなどの IDE のような機能を提供します。&lt;br /&gt;
&lt;br /&gt;
[[pacman]] から動的にリンクされた Haskell パッケージを使用している場合は、{{Pkg|haskell- language-server}} をインストールします。それ以外の場合、静的リンクを希望する場合は、{{AUR|haskell-langage-server-static}} をインストールしてください。このパッケージには、サポートされている GHC バージョンごとに静的にリンクされたバイナリが含まれています。あるいは、haskell-language-server は [[Haskell#ghcup|ghcup]] 経由、または [[Haskell#Visual Studio Code|Visual Studio Code]] の [https://marketplace.visualstudio.com/items?itemName=haskell.haskell Haskell 拡張機能] によってインストールできます。&lt;br /&gt;
&lt;br /&gt;
haskell-language-serverは、プロジェクトを開いたときに自動的にビルド構成を決定しようとします。自動判別に失敗した場合は、プロジェクトのルートディレクトリにある {{ic|hie.yaml}} ファイルを使って [https://haskell-language-server.readthedocs.io/en/latest/configuration.html#configuring-your-project-build 手動で設定する] とよいでしょう。&lt;br /&gt;
&lt;br /&gt;
==== ghcid ====&lt;br /&gt;
&lt;br /&gt;
[https://github.com/ndmitchell/ghcid ghcid] は、Haskell 開発用の [https://downloads.haskell.org/~ghc/latest/docs/html/users_guide/ghci.html GHCi] ベースのツールです。は、ソースコードの変更ごとにコンパイラエラーと警告を表示するシンプルかつ堅牢な方法を提供します。{{AUR|ghcid}} パッケージ経由でインストールできます。&lt;br /&gt;
&lt;br /&gt;
==== hoogle ====&lt;br /&gt;
&lt;br /&gt;
[https://github.com/ndmitchell/hoogle hoogle] を使用すると、関数名またはおおよその型シグネチャによって Haskell ライブラリを検索できます。{{Pkg|hoogle}} パッケージ経由でインストールできます。&lt;br /&gt;
&lt;br /&gt;
hoogle のオンライン版は https://hoogle.haskell.org で入手できます。&lt;br /&gt;
&lt;br /&gt;
=== リンター ===&lt;br /&gt;
&lt;br /&gt;
==== hlint ====&lt;br /&gt;
&lt;br /&gt;
[https://github.com/ndmitchell/hlint hlint] は、代替関数の使用、コードの簡素化、冗長性の特定など、Haskell コードの改善の可能性を示唆しています。これは、{{Pkg|hlint}} パッケージを通じて入手できます。&lt;br /&gt;
&lt;br /&gt;
==== stan ====&lt;br /&gt;
&lt;br /&gt;
[https://github.com/kowainik/stan stan] は、[[Haskell#hlint|hlint]] を補完する Haskell 静的アナライザーです。2021 年 6 月現在はベータ段階です。&lt;br /&gt;
&lt;br /&gt;
==== weeder ====&lt;br /&gt;
&lt;br /&gt;
[https://github.com/ocharles/weeder weeder] はプログラム全体のデッドコード解析を行うアプリケーションです。&lt;br /&gt;
&lt;br /&gt;
=== フォーマッタ ===&lt;br /&gt;
&lt;br /&gt;
* {{App|Floskell|柔軟性と設定可能性に焦点を当てた hindent のフォーク|https://github.com/ennocramer/floskell|{{Pkg|haskell-floskell}}}}&lt;br /&gt;
* {{App|fourmolu|様々な書式パラメータを設定する機能を追加した Ormolu のフォーク|https://github.com/parsonsmatt/fourmolu|{{Pkg|haskell-fourmolu}}}}&lt;br /&gt;
* {{App|hindent|拡張可能な Haskell プリンター|https://github.com/mihaimaruseac/hindent|{{Pkg|hindent}}}}&lt;br /&gt;
* {{App|Ormolu|Haskell ソースコード用のフォーマッタで、設定を必要としない &amp;quot;真の&amp;quot; 書式スタイルを実装しています。|https://github.com/tweag/ormolu|{{Pkg|haskell-ormolu}}}}&lt;br /&gt;
* {{App|stylish-haskell|シンプルな Haskell コードの整形ツール。|https://github.com/jaspervdj/stylish-haskell|{{Pkg|stylish-haskell}}}}&lt;br /&gt;
&lt;br /&gt;
=== エディタ ===&lt;br /&gt;
&lt;br /&gt;
==== Visual Studio Code ====&lt;br /&gt;
&lt;br /&gt;
[[Visual Studio Code]] には、[[Haskell#haskell-language-server|haskell-language-server]] を利用した [https://marketplace.visualstudio.com/items?itemName=haskell.haskell Haskell 拡張機能] があります。haskell-language-server がインストールされていない場合は、Haskell 拡張機能が静的にリンクされた Linux バイナリを自動的にダウンロードしてインストールします。&lt;br /&gt;
&lt;br /&gt;
==== IntelliJ IDEA ====&lt;br /&gt;
&lt;br /&gt;
[https://www.jetbrains.com/idea IntelliJ IDEA] Haskell のサポートは、[https://plugins.jetbrains.com/plugin/8258-intellij-haskell Haskell プラグイン] によって提供されます。  {{Pkg|intellij-idea-community-edition}} を含む IntelliJ IDEA のどのエディションでも動作します。&lt;br /&gt;
&lt;br /&gt;
新しいプロジェクトを作成するか、既存のプロジェクトを IntelliJ IDEA にインポートするには、Stack をインストールする必要があります。2021 年 6 月現在、Cabal のみのプロジェクト [https://github.com/rikvdkleij/intellij-haskell/issues/625 はサポートされていません]&lt;br /&gt;
&lt;br /&gt;
==== Vim ====&lt;br /&gt;
&lt;br /&gt;
[[Vim]] の基本的な設定のハイライトとインデントは、[https://github.com/neovimhaskell/haskell-vim haskell-vim] プラグインを介して取得できます。IDE のようなエクスペリエンスを向上させるには、[https://vimawesome.com/?q=LSP LSP client] プラグイン (例:[https://github.com/neoclide/coc.nvim coc.nvim]、[https://github.com/dense-analysis/ale ALE]、[https://github.com/autozimu/LanguageClient-neovim LanguageClient-neovim]) と [[Haskell#haskell-language-server|haskell- language-server]]&lt;br /&gt;
&lt;br /&gt;
==== Emacs ====&lt;br /&gt;
&lt;br /&gt;
Haskell の基本的な [[Emacs]] サポートは、公式 [https://github.com/haskell/haskell-mode haskell-mode] によって提供されます。より高度な機能については、[https://github.com/emacs-lsp/lsp-haskell lsp-haskell] を [[Haskell#haskell-langage-server|haskell-language-server]] とともに使用してください。&lt;br /&gt;
&lt;br /&gt;
== 代替インストール ==&lt;br /&gt;
&lt;br /&gt;
{{Note|このセクションでは、公式リポジトリのパッケージを使用せずに、Haskell を Arch にインストールする別の方法について説明します。以前に GHC、Cabal、Stack、またはその他の Haskell パッケージをインストールした場合は、必ず最初にそれらをアンインストールしてください。{{ic|~/.cabal}} ディレクトリと {{ic|~/.stack}} ディレクトリが存在する場合は削除します。}}&lt;br /&gt;
&lt;br /&gt;
汎用 Linux ディストリビューションに Haskell をインストールするには、[https://ghcup.readthedocs.io/en/latest ghcup] と [https://www.haskellstack.org Stack] という 2 つの公式に推奨される方法があります。どちらの方法でも、静的にリンクされた GHC、ツール、ライブラリがホーム ディレクトリにインストールされます。&lt;br /&gt;
&lt;br /&gt;
公式リポジトリの Haskell パッケージの代わりに ghcup または Stack を使用する利点は、複数のバージョンの GHC を並べてインストールして管理できることです。この方法でインストールされた Cabal と Stack は通常、追加の設定を行わずにすぐに動作するため、初心者にとっては簡単かもしれません。&lt;br /&gt;
&lt;br /&gt;
Haskell をインストールするまったく異なる方法は、[[Nix]] パッケージ マネージャーです。Nix は学習曲線がより急峻ですが、Haskell パッケージと非 Haskell パッケージの両方を信頼性が高く再現可能な方法で管理する上でより高い柔軟性を提供します。&lt;br /&gt;
&lt;br /&gt;
=== ghcup ===&lt;br /&gt;
&lt;br /&gt;
ghcup は、GHC の複数のバージョンを簡単にインストールし、それらを切り替えることができるコマンドラインツールです。これは、[https://github.com/rust-lang/rustuprusup]、[https://github.com/pyenv/pyenv pyenv]、および [https://www.jenv.be jenv] とスコープが似ています。&lt;br /&gt;
&lt;br /&gt;
{{AUR|ghcup-hs-bin}} パッケージをインストールしてください。あるいは、公式の [https://www.haskell.org/ghcup インストール手順] に従うか、手動で [https://downloads.haskell.org/~ghcup ghcup バイナリ] をダウンロードして {{ic|$PATH}} のどこかに置いてください。&lt;br /&gt;
&lt;br /&gt;
デフォルトでは、ghcup は GHC 実行ファイルを {{ic|~/.ghcup/bin}} にインストールします。このディレクトリをシェル設定ファイルの {{ic|$PATH}} 環境変数に追加する必要があります。例えば {{Pkg|bash}} なら {{ic|~/.bashrc}}、{{Pkg|zsh}} なら {{ic|~/.zshrc}} です。Cabal によってインストールされた実行可能ファイルを実行したい場合は、{{ic|~/.cabal/bin}} も {{ic|$PATH}} に追加してください:&lt;br /&gt;
&lt;br /&gt;
 export PATH=&amp;quot;$HOME/.cabal/bin:$HOME/.ghcup/bin:$PATH&amp;quot;&lt;br /&gt;
&lt;br /&gt;
{{Tip|XDG スタイルのディレクトリを使用する場合は、{{ic|GHCUP_USE_XDG_DIRS}} 環境変数 (https://ghcup.readthedocs.io/en/latest/guide/#xdg-support) を定義します。}}&lt;br /&gt;
&lt;br /&gt;
ghcup は、その機能のほとんどをサポートする便利な TUI を提供します。&lt;br /&gt;
&lt;br /&gt;
 $ ghcup tui&lt;br /&gt;
&lt;br /&gt;
あるいは、次の CLI コマンドを使用することもできます。&lt;br /&gt;
&lt;br /&gt;
GHC と Cabal の利用可能なバージョンをリストします。&lt;br /&gt;
&lt;br /&gt;
 $ ghcup list&lt;br /&gt;
&lt;br /&gt;
推奨バージョンの GHC をインストールします。&lt;br /&gt;
&lt;br /&gt;
 $ ghcup install ghc&lt;br /&gt;
&lt;br /&gt;
たとえば、GHC の特定のバージョンをインストールすることもできます。&lt;br /&gt;
&lt;br /&gt;
 $ ghcup install ghc 8.10.2&lt;br /&gt;
&lt;br /&gt;
上記のコマンドでは、GHC が {{ic|$PATH}} で自動的に利用可能になるわけではありません。デフォルトで使用する GHC バージョンを選択する必要があります。&lt;br /&gt;
&lt;br /&gt;
 $ ghcup set ghc 8.10.2&lt;br /&gt;
&lt;br /&gt;
Cabal の推奨バージョンをインストールします。&lt;br /&gt;
&lt;br /&gt;
 $ ghcup install cabal&lt;br /&gt;
&lt;br /&gt;
Cabal を使用して、特別な設定やコマンドラインフラグを必要とせずに、静的にリンクされた Haskell 実行可能ファイルをビルドおよびインストールできるようになりました。&lt;br /&gt;
&lt;br /&gt;
{{bc|&lt;br /&gt;
$ cabal update&lt;br /&gt;
$ cabal install &#039;&#039;executable&#039;&#039;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
新しい Cabal プロジェクトを開始するには:&lt;br /&gt;
{{hc|&lt;br /&gt;
$ cd /path/to/my-project&lt;br /&gt;
$ cabal init&lt;br /&gt;
$ cabal build&lt;br /&gt;
$ cabal run|&lt;br /&gt;
Up to date&lt;br /&gt;
Hello, Haskell!&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Haskell#haskell-language-server|haskell-language-server]] をインストールするには、次のコマンドを使用します。&lt;br /&gt;
&lt;br /&gt;
 $ ghcup install hls&lt;br /&gt;
&lt;br /&gt;
詳細については、公式 [https://ghcup.readthedocs.io/en/latest/guide ghcup] および [https://cabal.readthedocs.io/en/latest Cabal] ドキュメントを参照してください。&lt;br /&gt;
&lt;br /&gt;
==== ネイティブインストールでの使用 ====&lt;br /&gt;
&lt;br /&gt;
ネイティブインストールと一緒に &#039;&#039;&#039;GHCup と Cabal&#039;&#039;&#039; を使用することを決めた場合、Cabal にどの GHC を使用するかを指定する必要があります。{{ic|$HOME/.config/cabal/config}} ファイルで使用する GHC バージョンのパスを指定し、{{ic|with-compiler:}} 行を探してコメントを解除してください。&lt;br /&gt;
&lt;br /&gt;
  with-compiler: &#039;&#039;path_of_your_ghc&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
GHCup を使用する場合、GHC のパスは {{ic|$HOME/.ghcup/bin}} 配下に配置されることを覚えておいてください。また、GHCup は使用したい GHC のバージョンを設定すると、そのバージョンを {{ic|$HOME/.ghcup/bin/ghc}} にリンクします。このパスを Cabal の設定に指定しておけば、GHCup を使って Cabal が使用する GHC のバージョンを切り替えることができます。&lt;br /&gt;
&lt;br /&gt;
=== Stack ===&lt;br /&gt;
&lt;br /&gt;
{{AUR|stack-static}} パッケージをインストールします。あるいは、公式の [https://docs.haskellstack.org/en/stable/install_and_upgrade インストール手順] に従うか、[https://github.com/commercialhaskell/stack/releases スタックバイナリ] を手動でダウンロードして、それをあなたの {{ic|$PATH}} に配置することもできます。&lt;br /&gt;
&lt;br /&gt;
スタックによってインストールされた実行可能ファイルを実行したい場合は、シェル設定ファイルの {{ic|$PATH}} 環境変数に {{ic|~/.local/bin}} ディレクトリを追加します (例:{{ic|~/) {{Pkg|bash}} の場合は、{ic|~/.bashrc}} {{Pkg|zsh}} の場合は {{ic|~/.zshrc}}:&lt;br /&gt;
&lt;br /&gt;
 export PATH=&amp;quot;$HOME/.local/bin:$PATH&amp;quot;&lt;br /&gt;
&lt;br /&gt;
{{ic|stack setup}} を実行して、最新のスタック LTS スナップショットから GHC を自動的にインストールします。&lt;br /&gt;
&lt;br /&gt;
 $ stack setup&lt;br /&gt;
&lt;br /&gt;
特別な設定やコマンドラインフラグを必要とせずに、Stack を使用して静的にリンクされた Haskell パッケージを構築およびインストールできるようになりました。&lt;br /&gt;
&lt;br /&gt;
 $ stack install &#039;&#039;package&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
詳細については、公式 [https://docs.haskellstack.org/en/stable Stack ドキュメント] を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== Nix ===&lt;br /&gt;
&lt;br /&gt;
{{Expansion|I cannot offer a good enough overview, due to no experience with it}}&lt;br /&gt;
&lt;br /&gt;
== ヒントとテクニック ==&lt;br /&gt;
&lt;br /&gt;
=== 静的リンク ===&lt;br /&gt;
&lt;br /&gt;
{{Note|&lt;br /&gt;
* このセクションでは、静的にリンクされた Haskell パッケージを Arch 上でビルドしながら、公式リポジトリからインストールされた GHC を使用する方法について説明します。続行する前に、{{ic|~/.cabal}} ディレクトリと {{ic|~/.stack}} ディレクトリが存在する場合は必ず削除してください。&lt;br /&gt;
* この記事の文脈において、静的リンクは完全に静的な ELF バイナリを生成することを意味するものではありません。Haskell コードのみが単一の ELF バイナリに静的にリンクされ、それは {{Pkg|glibc}} などの他のシステムライブラリに動的にリンクされる場合があります。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
静的リンクを使用するには、少なくとも、{{Pkg|ghc-static}} パッケージを通じて静的ブートライブラリをインストールする必要があります。これにより、ブートライブラリだけでなく、公式リポジトリから {{ic|haskell-*}} パッケージを通じてインストールされない他のライブラリにもっぱら依存するプロジェクトをビルドできるようになります。&lt;br /&gt;
&lt;br /&gt;
残念ながら、プロジェクトがインストールした動的にリンクされた {{ic|haskell-*}} パッケージのいずれかに依存している場合、Cabal は依存関係の解決時に静的ライブラリの不在を考慮しません。その結果、既存の {{ic|haskell-*}} パッケージを使用しようとし、静的ライブラリを検出すると [https://bugs.archlinux.org/task/54563#comment158808 linker errors] で失敗します。:&lt;br /&gt;
&lt;br /&gt;
 Could not find module ‘&#039;&#039;SomePackage.SomeModule&#039;&#039;’&lt;br /&gt;
 There are files missing in the ‘&#039;&#039;somepackage-0.1.0.0&#039;&#039;’ package,&lt;br /&gt;
 try running &#039;ghc-pkg check&#039;.&lt;br /&gt;
 Use -v (or `:set -v` in ghci) to see a list of the files searched for.&lt;br /&gt;
&lt;br /&gt;
{{ic|ghc-static}}とは異なり、連携可能な &amp;quot;{{ic|haskell-*-static}}&amp;quot; パッケージはありません。ただし、以下の各セクションで説明するように、この問題を回避する他の方法もあります。&lt;br /&gt;
&lt;br /&gt;
==== 静的グローバルパッケージデータベース ====&lt;br /&gt;
&lt;br /&gt;
直接的な [https://www.reddit.com/r/linux/comments/9emwtu/arch_linux_ama/efjnyd6/ アプローチ] は、公式の {{Pkg|ghc-static}} パッケージによって提供されており、代替の &amp;quot;静的&amp;quot; パッケージが公開されています。グローバルパッケージデータベース({{ic|/usr/lib/ghc-&#039;&#039;version&#039;&#039;/static-package.conf.d}})静的データベースは、静的にリンク可能なブートパッケージのみに制限されているため、デフォルトデータベースの代わりに静的データベースを使用するように Cabal が再構成されている場合、動的専用の {{ic|haskell-*}} パッケージがリンクされていないかのように動作します。&lt;br /&gt;
&lt;br /&gt;
静的データベースの正確なパスは、次のようなコマンドを使用して構築時に決定できます。&lt;br /&gt;
&lt;br /&gt;
{{hc|&lt;br /&gt;
$ ghc --print-global-package-db {{!}} sed &#039;s/\(package\.conf\.d\)$/static-\1/&#039;|&lt;br /&gt;
/usr/lib/ghc-&#039;&#039;version&#039;&#039;/static-package.conf.d&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
静的データベースを使用できるようにする方法は次のとおりです。&lt;br /&gt;
&lt;br /&gt;
* Cabal でパッケージを構築する場合、次のフラグを渡すと、グローバルパッケージの選択をブートパッケージのみに制限できます。&lt;br /&gt;
&lt;br /&gt;
 $ cabal configure --ghc-pkg-option=&amp;quot;--global-package-db=$(ghc --print-global-package-db | sed &#039;s/\(package\.conf\.d\)$/static-\1/&#039;)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* Cabal ではなく GHC を使用して直接ビルドする場合、次のフラグを渡してグローバルパッケージデータベースをオーバーライドできます。&lt;br /&gt;
&lt;br /&gt;
 $ ghc -clear-package-db -package-db &amp;quot;$(ghc --print-global-package-db | sed &#039;s/\(package\.conf\.d\)$/static-\1/&#039;)&amp;quot; -user-package-db ...&lt;br /&gt;
&lt;br /&gt;
==== ghc-pristine ====&lt;br /&gt;
&lt;br /&gt;
{{AUR|ghc-pristine}} パッケージをインストールします。このパッケージは既存の GHC インストールをラップして、ブートライブラリのみを含むパッケージデータベースを備えた別の GHC ディストリビューションを {{ic|/usr/share/ghc-pristine}} に作成します。これにより、動的にリンクされた {{ic|haskell-*}} パッケージを使用せずに半分離環境が効果的に作成されますが、それでも公式リポジトリの GHC コンパイラーが利用されます。次に、静的リンクを使用してソフトウェアを構築するには、ラップされたコンパイラー {{ic|/usr/share/ghc-pristine/bin/ghc}} を呼び出すだけです。Cabal の場合、これは {{ic|~/.cabal/config}} の次の構成に相当します。&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.cabal/config|&lt;br /&gt;
with-compiler: /usr/share/ghc-pristine/bin/ghc&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
プロジェクトディレクトリから次のコマンドを実行して、プロジェクトごとにコンパイラへのパスを指定することもできます。&lt;br /&gt;
&lt;br /&gt;
 $ cabal configure --with-compiler=/usr/share/ghc-pristine/bin/ghc&lt;br /&gt;
&lt;br /&gt;
==== cabal-static ====&lt;br /&gt;
&lt;br /&gt;
Arch で静的リンクを取り戻すもう 1 つの方法は、{{AUR|cabal-static}} パッケージをインストールすることです。公式の {{Pkg|cabal-install}} とは異なり、これは動的にリンクされた {{ic|haskell-*}} の依存関係を公式リポジトリから取得せず、同じシステムにインストールされた静的 Haskell ライブラリと共有 Haskell ライブラリの混合を回避します。その後、次の制限付きで通常どおり Cabal を使用できます: インストールした他の Haskell パッケージが {{Pkg|ghc}}、{{Pkg|ghc-libs}} のみであることを確認する必要があります。および {{Pkg|ghc-static}} ({{Pkg|cabal-install}}、{{Pkg|stack}}、および公式リポジトリで入手可能な {{ic|haskell-*}} パッケージではありません。)&lt;br /&gt;
&lt;br /&gt;
==== stack-static ====&lt;br /&gt;
&lt;br /&gt;
{{AUR|stack-static}} パッケージをインストールします。{{ic|cabal-static}} メソッドと同様に、公式リポジトリからインストールした他の Haskell パッケージが {{Pkg|ghc}}、{{Pkg|ghc-libs}}、および {{Pkg|ghc-static}} のみであることを確認してください。次に、[[Haskell#動的リンク用のスタックの設定|動的リンク用のスタックの設定]] で説明されているように、システム GHC を使用するようにスタックをセットアップします。&lt;br /&gt;
&lt;br /&gt;
 $ stack setup --system-ghc --resolver &#039;&#039;resolver&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
これらのオプションを永続的にするには、次のスニペットを {{ic|~/.stack/config.yaml}} に貼り付けます。&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.stack/config.yaml|&lt;br /&gt;
# Stop downloading GHCs into isolated locations under ~/.stack.&lt;br /&gt;
install-ghc: false&lt;br /&gt;
&lt;br /&gt;
# Allow Stack to pick the system GHC (false by default).&lt;br /&gt;
system-ghc: true&lt;br /&gt;
&lt;br /&gt;
# Allow to use, say, Stackage snapshot for GHC 8.8.2 with system GHC 8.8.3.&lt;br /&gt;
compiler-check: newer-minor&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
この設定では、通常と同じように静的にリンクされたパッケージをビルドできますが、Stack によって提供される GHC の代わりにシステム GHC インストールを使用します。&lt;br /&gt;
&lt;br /&gt;
==== hpack-static-bin ====&lt;br /&gt;
&lt;br /&gt;
{{AUR|hpack-static-bin}} は、{{Pkg|haskell-hpack}} の代わりに静的にリンクされた ({{ic|haskell-*}} 依存関係がないことを意味します) を提供します。プリコンパイルされているため、make 依存関係は必要ありません。&lt;br /&gt;
&lt;br /&gt;
== 参照 ==&lt;br /&gt;
&lt;br /&gt;
* [https://www.haskell.org Official website of the Haskell programming language]&lt;br /&gt;
* [https://www.haskell.org/documentation Haskell documentation]&lt;br /&gt;
* [https://wiki.haskell.org/Haskell Haskell Wiki]&lt;br /&gt;
* [https://downloads.haskell.org/ghc/latest/docs/html/users_guide GHC User Guide]&lt;br /&gt;
* [https://cabal.readthedocs.io/en/latest Cabal User Guide]&lt;br /&gt;
* [https://docs.haskellstack.org/en/stable Stack User Guide]&lt;br /&gt;
* [https://hackage.haskell.org Haskell community&#039;s central package archive]&lt;br /&gt;
* [https://www.stackage.org Stable source of Haskell packages]&lt;br /&gt;
* [https://hoogle.haskell.org Haskell API search engine]&lt;br /&gt;
* [http://learnyouahaskell.com Learn You a Haskell for Great Good!]&lt;br /&gt;
* [http://book.realworldhaskell.org Real World Haskell]&lt;br /&gt;
* [https://en.wikibooks.org/wiki/Haskell Haskell Wikibook]&lt;br /&gt;
* [http://dev.stephendiehl.com/hask What I Wish I Knew When Learning Haskell]&lt;br /&gt;
* [https://github.com/krispo/awesome-haskell Awesome Haskell: an auxiliary list of awesome Haskell links, frameworks, libraries and software]&lt;/div&gt;</summary>
		<author><name>E-kwsm</name></author>
	</entry>
</feed>