<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>【ghc】タグの記事一覧｜Haskell Tech</title>
	<atom:link href="https://haskell-tech.nkhn37.net/tag/ghc/feed/" rel="self" type="application/rss+xml" />
	<link>https://haskell-tech.nkhn37.net</link>
	<description>Haskell学習サイト</description>
	<lastBuildDate>Sun, 21 Jan 2024 09:43:04 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0.2</generator>

<image>
	<url>https://haskell-tech.nkhn37.net/wp-content/uploads/2023/12/cropped-lion-normal-clear-32x32.png</url>
	<title>【ghc】タグの記事一覧｜Haskell Tech</title>
	<link>https://haskell-tech.nkhn37.net</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Haskellのインストール方法（Windows）</title>
		<link>https://haskell-tech.nkhn37.net/haskell-install-windows/</link>
					<comments>https://haskell-tech.nkhn37.net/haskell-install-windows/#respond</comments>
		
		<dc:creator><![CDATA[naoki-hn]]></dc:creator>
		<pubDate>Sat, 20 Jan 2024 20:00:00 +0000</pubDate>
				<category><![CDATA[開発環境]]></category>
		<category><![CDATA[ghc]]></category>
		<category><![CDATA[ghci]]></category>
		<category><![CDATA[ghcup]]></category>
		<category><![CDATA[stack]]></category>
		<category><![CDATA[windows]]></category>
		<guid isPermaLink="false">https://haskell-tech.nkhn37.net/?p=312</guid>

					<description><![CDATA[HaskellをLinuxにインストールする方法について解説します。具体的には、Windows11を対象にします。 Haskellの環境構築（Windows） Haskellは、高度な純粋関数型プログラミング言語で、強力]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph"><span class="marker"><strong>HaskellをLinuxにインストールする方法</strong></span>について解説します。具体的には、Windows11を対象にします。</p>



<h2 class="wp-block-heading">Haskellの環境構築（Windows）</h2>



<p class="wp-block-paragraph"><span class="marker"><strong>Haskell</strong></span>は、高度な純粋関数型プログラミング言語で、強力な型システムと静的型付けを特徴としています。関数型プログラミングを学ぶには最適な言語のひとつです。</p>



<p class="wp-block-paragraph">本記事では、Haskellの開発環境をWindowsで用意するための方法について紹介しますが、Linuxでも環境は用意できます。LinuxのUbuntuにインストールする方法は「<a href="https://haskell-tech.nkhn37.net/haskell-install-linux/" target="_blank" rel="noreferrer noopener">Haskellのインストール方法 （Linux）</a>」でまとめているのでLinuxをお使いの方はこちらを参考にしてください。</p>



<p class="wp-block-paragraph">なお、Haskellは、WindowsとLinuxの両方の環境で使用されますが、一般的にはLinuxがより好まれる傾向にあります。これは、多くの開発者やシステム管理者がLinuxを好むため、より多くのオープンソースプロジェクトや開発ツールがLinux環境に最適化されているためです。HaskellはどちらのOSでも動作しますが、Linux環境では特にパッケージ管理や環境設定が容易であると言われています。</p>



<p class="wp-block-paragraph">ただし、これは一般的な傾向であり、特定のプロジェクトやチームによってはWindows環境でHaskellを積極的に使用している場合もあります。また、開発者の個人的な好みや特定のプロジェクトの要件によっても、使用されるOSは異なる可能性がありますので必要に応じて検討してください。</p>



<p class="wp-block-paragraph">本記事では、<span class="marker"><strong>Haskellの開発環境をWindowsで用意する方法</strong></span>について説明します。なお、本記事の前提として使用したOSとしては、Windows11とします。</p>



<h3 class="wp-block-heading">Haskellのインストール</h3>



<p class="wp-block-paragraph">Haskell関連のインストールは、Haskellの<a href="https://www.haskell.org/downloads/" target="_blank" rel="noreferrer noopener">公式ダウンロードページ</a>の情報を参考に行います。</p>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img fetchpriority="high" decoding="async" width="1024" height="763" src="https://haskell-tech.nkhn37.net/wp-content/uploads/2024/01/image-20.png" alt="Haskell インストール" class="wp-image-314" srcset="https://haskell-tech.nkhn37.net/wp-content/uploads/2024/01/image-20.png 1024w, https://haskell-tech.nkhn37.net/wp-content/uploads/2024/01/image-20-300x224.png 300w, https://haskell-tech.nkhn37.net/wp-content/uploads/2024/01/image-20-768x572.png 768w, https://haskell-tech.nkhn37.net/wp-content/uploads/2024/01/image-20.png 856w" sizes="(max-width: 1024px) 100vw, 1024px" /><figcaption class="wp-element-caption"><a href="https://www.haskell.org/downloads/" target="_blank" rel="noreferrer noopener">公式ダウンロードページ</a>　※記事執筆時点のため画面構成は変わっている可能性があります</figcaption></figure>
</div>


<p class="wp-block-paragraph">本記事では、GHCのインストーラーであるGHCupを使用してGHCのインストールを行います。</p>



<p class="wp-block-paragraph"><span class="marker"><strong>GHC (Glasgow Haskell Compiler)</strong></span>は、最も広く使われているHaskellコンパイラであり、<span class="marker"><strong>GHCup</strong></span>は、Haskell環境構築のためのインストーラのことです。</p>



<h3 class="wp-block-heading">インストール手順</h3>



<p class="wp-block-paragraph">Haskellダウンロードページの「GHCup」ボタンをクリックすると、<a href="https://www.haskell.org/ghcup/" target="_blank" rel="noreferrer noopener">GHCup</a>のページに遷移します。初期表示時にはWindowsのインストールに関する表示がされていると思います。</p>


<div class="wp-block-image">
<figure class="aligncenter size-large"><img decoding="async" width="1024" height="470" src="https://haskell-tech.nkhn37.net/wp-content/uploads/2024/01/image-21-1024x470.png" alt="GHCup インストール windows" class="wp-image-315" srcset="https://haskell-tech.nkhn37.net/wp-content/uploads/2024/01/image-21-1024x470.png 1024w, https://haskell-tech.nkhn37.net/wp-content/uploads/2024/01/image-21-300x138.png 300w, https://haskell-tech.nkhn37.net/wp-content/uploads/2024/01/image-21-768x353.png 768w, https://haskell-tech.nkhn37.net/wp-content/uploads/2024/01/image-21.png 1193w, https://haskell-tech.nkhn37.net/wp-content/uploads/2024/01/image-21-1024x470.png 856w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>
</div>


<p class="wp-block-paragraph">WindowsのPower Shellを開いて、表示されている以下のコマンドを実行します。上記画面のコピーボタンからコピーできます。</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; gutter: false; title: ; notranslate">
Set-ExecutionPolicy Bypass -Scope Process -Force;&#x5B;System.Net.ServicePointManager]::SecurityProtocol = &#x5B;System.Net.ServicePointManager]::SecurityProtocol -bor 3072; try { Invoke-Command -ScriptBlock (&#x5B;ScriptBlock]::Create((Invoke-WebRequest https://www.haskell.org/ghcup/sh/bootstrap-haskell.ps1 -UseBasicParsing))) -ArgumentList $true } catch { Write-Error $_ }
</pre></div>


<p class="wp-block-paragraph">上記のコマンドについて簡単に説明すると以下のようになります。</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>コマンド</th><th>概要</th></tr></thead><tbody><tr><td><code>Set-ExecutionPolicy Bypass -Scope Process -Force;</code></td><td>PowerShellの実行ポリシーを設定するコマンドです。<code>Bypass</code>オプションにより、すべてのスクリプトと構成ファイルが制限なしに実行できるようになります。<code>-Scope Process</code>オプションは変更が現在のプロセスにのみ適用されることを意味します。<code>-Force</code>オプションは確認なしで実行ポリシーを変更します。</td></tr><tr><td><code>[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072;</code></td><td>この行は、.NETの<code>ServicePointManager</code>を使用して、セキュリティプロトコルの設定を変更しています。<code>-bor 3072</code>は、TLS 1.2 (値を3072)で追加します。</td></tr><tr><td><code>try { Invoke-Command -ScriptBlock ([ScriptBlock]::Create((Invoke-WebRequest https://www.haskell.org/ghcup/sh/bootstrap-haskell.ps1 -UseBasicParsing))) -ArgumentList $true } catch { Write-Error $_ }</code></td><td>例外処理の<code>try...catch</code>構文を使用しています。エラーは<code>Write-Error $_</code>の部分で表示します。<br>コマンドの意味は以下です。<br><code>Invoke-Command</code>: PowerShellコマンドやスクリプトを実行するために使用します。<br><code>ScriptBlock</code>: 実行するコマンドまたはスクリプトのブロックを定義します。<br><code>Invoke-WebRequest</code>: 指定したURLからデータを取得します。ここではHaskellのインストールスクリプト<code>bootstrap-haskell.ps1</code>を取得しています。<br><code>-UseBasicParsing</code>: HTML解析を行うためのオプションです。<br><code>-ArgumentList $true</code>: スクリプトに引数<code>$true</code>を渡します。</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">すごく簡単に言ってしまうとPowerShellの実行ポリシーを変更しつつ、Haskellのインストールのためのps1ファイルをインストールしてきて実行するということです。</p>



<p class="wp-block-paragraph">コマンドを実行すると以下のような表示がされます。インストールパスとしてCドライブいかにインストールされることが表示されます。問題がなければenterをクリックしてください。</p>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="288" src="https://haskell-tech.nkhn37.net/wp-content/uploads/2024/01/image-22-1024x288.png" alt="" class="wp-image-317" srcset="https://haskell-tech.nkhn37.net/wp-content/uploads/2024/01/image-22-1024x288.png 1024w, https://haskell-tech.nkhn37.net/wp-content/uploads/2024/01/image-22-300x84.png 300w, https://haskell-tech.nkhn37.net/wp-content/uploads/2024/01/image-22-768x216.png 768w, https://haskell-tech.nkhn37.net/wp-content/uploads/2024/01/image-22.png 1110w, https://haskell-tech.nkhn37.net/wp-content/uploads/2024/01/image-22-1024x288.png 856w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">次に、GHCupのインストールパスの表示がされます。問題がなければenterをクリックしてください。</p>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="106" src="https://haskell-tech.nkhn37.net/wp-content/uploads/2024/01/image-23-1024x106.png" alt="" class="wp-image-318" srcset="https://haskell-tech.nkhn37.net/wp-content/uploads/2024/01/image-23-1024x106.png 1024w, https://haskell-tech.nkhn37.net/wp-content/uploads/2024/01/image-23-300x31.png 300w, https://haskell-tech.nkhn37.net/wp-content/uploads/2024/01/image-23-768x79.png 768w, https://haskell-tech.nkhn37.net/wp-content/uploads/2024/01/image-23.png 1113w, https://haskell-tech.nkhn37.net/wp-content/uploads/2024/01/image-23-1024x106.png 856w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph"><span class="marker"><strong>haskell-language-server (HLS)</strong></span>のインストールをするか確認があります。HLSは、Haskellプログラミング言語のための高度な言語サーバーで、Haskell開発において多くの利点を提供してくれるため、インストールしておきます。「Y」を入力してENTERをクリックします。</p>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="66" src="https://haskell-tech.nkhn37.net/wp-content/uploads/2024/01/image-24-1024x66.png" alt="" class="wp-image-319" srcset="https://haskell-tech.nkhn37.net/wp-content/uploads/2024/01/image-24-1024x66.png 1024w, https://haskell-tech.nkhn37.net/wp-content/uploads/2024/01/image-24-300x19.png 300w, https://haskell-tech.nkhn37.net/wp-content/uploads/2024/01/image-24-768x50.png 768w, https://haskell-tech.nkhn37.net/wp-content/uploads/2024/01/image-24.png 1109w, https://haskell-tech.nkhn37.net/wp-content/uploads/2024/01/image-24-1024x66.png 856w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">stackの設定を実行するか確認があります。「Y」を入力して有効化するようにします。stackは、Haskellのプロジェクト管理およびビルドのためのツールです。</p>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="67" src="https://haskell-tech.nkhn37.net/wp-content/uploads/2024/01/image-25-1024x67.png" alt="" class="wp-image-320" srcset="https://haskell-tech.nkhn37.net/wp-content/uploads/2024/01/image-25-1024x67.png 1024w, https://haskell-tech.nkhn37.net/wp-content/uploads/2024/01/image-25-300x20.png 300w, https://haskell-tech.nkhn37.net/wp-content/uploads/2024/01/image-25-768x50.png 768w, https://haskell-tech.nkhn37.net/wp-content/uploads/2024/01/image-25.png 1111w, https://haskell-tech.nkhn37.net/wp-content/uploads/2024/01/image-25-1024x67.png 856w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">Desktopにショートカットを作るか聞かれるので「Y」を入力してENTERをクリックします。</p>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="64" src="https://haskell-tech.nkhn37.net/wp-content/uploads/2024/01/image-26-1024x64.png" alt="" class="wp-image-321" srcset="https://haskell-tech.nkhn37.net/wp-content/uploads/2024/01/image-26-1024x64.png 1024w, https://haskell-tech.nkhn37.net/wp-content/uploads/2024/01/image-26-300x19.png 300w, https://haskell-tech.nkhn37.net/wp-content/uploads/2024/01/image-26-768x48.png 768w, https://haskell-tech.nkhn37.net/wp-content/uploads/2024/01/image-26.png 1111w, https://haskell-tech.nkhn37.net/wp-content/uploads/2024/01/image-26-1024x64.png 856w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">MSys2のインストールの確認があるので「Y」を入力してENTERをクリックします。MSys2はWindowsでUnixのような開発環境とツールチェーンを提供するソフトウェアです。</p>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="65" src="https://haskell-tech.nkhn37.net/wp-content/uploads/2024/01/image-27-1024x65.png" alt="" class="wp-image-322" srcset="https://haskell-tech.nkhn37.net/wp-content/uploads/2024/01/image-27-1024x65.png 1024w, https://haskell-tech.nkhn37.net/wp-content/uploads/2024/01/image-27-300x19.png 300w, https://haskell-tech.nkhn37.net/wp-content/uploads/2024/01/image-27-768x49.png 768w, https://haskell-tech.nkhn37.net/wp-content/uploads/2024/01/image-27.png 1113w, https://haskell-tech.nkhn37.net/wp-content/uploads/2024/01/image-27-1024x65.png 856w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">その後にダウンロードやインストールが順次進んでいきます。</p>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="144" src="https://haskell-tech.nkhn37.net/wp-content/uploads/2024/01/image-28-1024x144.png" alt="" class="wp-image-323" srcset="https://haskell-tech.nkhn37.net/wp-content/uploads/2024/01/image-28-1024x144.png 1024w, https://haskell-tech.nkhn37.net/wp-content/uploads/2024/01/image-28-300x42.png 300w, https://haskell-tech.nkhn37.net/wp-content/uploads/2024/01/image-28-768x108.png 768w, https://haskell-tech.nkhn37.net/wp-content/uploads/2024/01/image-28.png 1109w, https://haskell-tech.nkhn37.net/wp-content/uploads/2024/01/image-28-1024x144.png 856w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">画面が勝手に切り替わったりと比較的時間がかかりますので、しばらく待ちましょう。表示されるプロンプトの全ての処理が終わればインストールは完了です。</p>



<div class="wp-block-jin-gb-block-box concept-box2">
<p class="wp-block-paragraph">今回Windows11環境で構築し、インストールおよび動作することは確認していますが、GHCupの<a href="https://www.haskell.org/ghcup/install/#supported-platforms" target="_blank" rel="noreferrer noopener">Supported platforms</a>では明確にWindows11のサポートの表示がされていません。勉強用などで環境を作る分にはよいと思いますが、実際の開発などで利用する際にはサポートされた環境を使うようにすると良いでしょう。<br>※記事執筆時点の情報のため最新ではサポートされている可能性があります。</p>
</div>



<h3 class="wp-block-heading">GHCiの実行</h3>



<p class="wp-block-paragraph">Haskellの実行環境の確認する方法としては、GHCのインタラクティブな対話型シェルであるGHCiを確認してみることです。コマンドプロンプトで以下を実行してみてください。</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; gutter: false; title: ; notranslate">
ghci
</pre></div>


<p class="wp-block-paragraph">GHCiが起動すると以下のような表示となります。</p>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img decoding="async" width="624" height="52" src="https://haskell-tech.nkhn37.net/wp-content/uploads/2024/01/image-29.png" alt="" class="wp-image-326"/></figure>
</div>


<p class="wp-block-paragraph">GHCiは、インタラクティブな対話型シェルのため、その場で計算を実行したり、Haskellプログラム(.hs)をロードして実行するといったことが可能です。「<a href="https://haskell-tech.nkhn37.net/haskell-ghci-command-list/" target="_blank" rel="noreferrer noopener">GHCiの主要なコマンド</a>」でGHCiの主要なコマンドを説明しているので、参考にして触ってみてもらえると面白いかと思います。</p>



<h3 class="wp-block-heading">Haskellの開発環境の準備</h3>



<p class="wp-block-paragraph">Haskellがインストールできたら開発環境を準備して実際の開発をします。</p>



<p class="wp-block-paragraph">Haskellの開発環境としては、他の言語の開発でもよく使用されるVisual Studio Code (VSCode)が使用できます。VSCodeは、拡張機能の豊富さ、そしてHaskell Language Serverとの互換性により、シンタックスハイライト、コード補完などの機能が利用できます。</p>



<p class="wp-block-paragraph">VSCodeでの環境の準備方法については「<a href="https://haskell-tech.nkhn37.net/vscode-haskell-environment-setting/" target="_blank" rel="noreferrer noopener">VSCodeでHaskellの開発環境を構築する方法</a>」でまとめていますので参考にしてください。</p>



<h2 class="wp-block-heading">まとめ</h2>



<p class="wp-block-paragraph"><span class="marker"><strong>HaskellをLinuxにインストールする方法</strong></span>について解説します。具体的には、Windows11を対象にします。</p>



<p class="wp-block-paragraph">Haskellは、高度な純粋関数型プログラミング言語で、強力な型システムと静的型付けを特徴としています。Haskell環境を構築して、是非Haskellでのプログラム開発や学習に役立ててもらえたらと思います。</p>



<p class="wp-block-paragraph">なお、記事冒頭でも紹介したようにHaskellはLinuxでも環境を構築できます。Linuxにインストールしたい場合は「<a href="https://haskell-tech.nkhn37.net/haskell-install-linux/" target="_blank" rel="noreferrer noopener">Haskellのインストール方法 （Linux）</a>」を参考にしてください。</p>



<figure class="wp-block-embed is-type-wp-embed is-provider-haskell-tech wp-block-embed-haskell-tech"><div class="wp-block-embed__wrapper">
https://haskell-tech.nkhn37.net/haskell-introduction/
</div></figure>
]]></content:encoded>
					
					<wfw:commentRss>https://haskell-tech.nkhn37.net/haskell-install-windows/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【Haskell】GHCiの主要なコマンド</title>
		<link>https://haskell-tech.nkhn37.net/haskell-ghci-command-list/</link>
					<comments>https://haskell-tech.nkhn37.net/haskell-ghci-command-list/#respond</comments>
		
		<dc:creator><![CDATA[naoki-hn]]></dc:creator>
		<pubDate>Sat, 06 Jan 2024 21:00:00 +0000</pubDate>
				<category><![CDATA[Haskell入門]]></category>
		<category><![CDATA[:info]]></category>
		<category><![CDATA[:instances]]></category>
		<category><![CDATA[:kind]]></category>
		<category><![CDATA[:l]]></category>
		<category><![CDATA[:load]]></category>
		<category><![CDATA[:t]]></category>
		<category><![CDATA[:type]]></category>
		<category><![CDATA[ghc]]></category>
		<category><![CDATA[ghci]]></category>
		<category><![CDATA[コマンド]]></category>
		<guid isPermaLink="false">https://haskell-tech.nkhn37.net/?p=176</guid>

					<description><![CDATA[HaskellコンパイラであるGHC (Glasgow Haskell Compiler)のインタラクティブ対話型シェルのGHCiの主要なコマンドについて紹介します。 GHCi Haskellのコンパイラで広く利用されて]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">HaskellコンパイラであるGHC (Glasgow Haskell Compiler)のインタラクティブ対話型シェルの<span class="marker"><strong>GHCiの主要なコマンド</strong></span>について紹介します。</p>



<h2 class="wp-block-heading">GHCi</h2>



<p class="wp-block-paragraph">Haskellのコンパイラで広く利用されているものはGHC (Glasgow Haskell Compiler)です。GHCには、インタラクティブな対話型シェルである<span class="marker"><strong>GHCi</strong></span>があります。</p>



<p class="wp-block-paragraph">GHCiを使うことでモジュール分割されたファイルの関数を個別に動作確認するといったことも可能となるため非常に便利です。Haskellでは、GHCiで各モジュールの関数を動作確認し、確認が終わったらGHCでコンパイルするという開発の流れが一般的です。</p>



<p class="wp-block-paragraph">GHCiには様々なコマンドがありますが、主要なコマンドを把握しておくことは非常に役立ちます。本記事では、<span class="marker"><strong>GHCiの主要なコマンド</strong></span>を紹介します。</p>



<h2 class="wp-block-heading">GHCiの主要なコマンド</h2>



<p class="wp-block-paragraph">以降では、GHCiにおける主要なコマンドを紹介していきます。実行例で表示している「$」「ghci&gt;」の部分については端末への入力を意味します。</p>



<h3 class="wp-block-heading">GHCiを終了する (<code>:q</code>)</h3>



<p class="wp-block-paragraph">対話型インターフェースを使う場合にまず覚えないといけないことは、GHCiの終了方法です。GHCiを終了するには「<span class="marker"><strong><code>:q</code></strong></span>」コマンドを使用します。</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; gutter: false; highlight: [2]; title: ; notranslate">
$ ghci
ghci&gt; :q
Leaving GHCi.
</pre></div>


<h3 class="wp-block-heading">ヘルプを表示する (<code>:?</code> または <code>:help</code>)</h3>



<p class="wp-block-paragraph">GHCiで使用できコマンドを表示する場合には「<span class="marker"><strong><code>:?</code></strong></span>」または「<span class="marker"><strong><code>:help</code></strong></span>」コマンドを使用します。</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; gutter: false; highlight: [2]; title: ; notranslate">
$ ghci
ghci&gt; :?
 Commands available from the prompt:

   &amp;lt;statement&gt;                 evaluate/run &amp;lt;statement&gt;
   :                           repeat last command
   :{\n ..lines.. \n:}\n       multiline command
   :add &#x5B;*]&amp;lt;module&gt; ...        add module(s) to the current target set
   :browse&#x5B;!] &#x5B;&#x5B;*]&amp;lt;mod&gt;]       display the names defined by module &amp;lt;mod&gt;
                               (!: more details; *: all top-level names)
   :cd &amp;lt;dir&gt;                   change directory to &amp;lt;dir&gt;
(...省略...)
</pre></div>


<h3 class="wp-block-heading">ファイルをロードする（<code>:l</code> または <code>:load</code>）</h3>



<p class="wp-block-paragraph">以下のようなtest.hsというプログラムがあるとします。このファイルをGHCiで読み込んで関数を実行する場合を例にファイルをロードする方法を説明します。</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: haskell; title: ; notranslate">
-- Test用Haskellプログラム
-- main関数を開始
main :: IO ()
main = do
    -- テスト出力
    print &quot;Hello World!&quot;
</pre></div>


<p class="wp-block-paragraph">GHCiでHaskellプログラムを読み込む場合には、以下のように読み込むことができます。読み込んだ後でmain関数などのプログラム中の関数を呼び出して実行することが可能です。</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; gutter: false; highlight: [1]; title: ; notranslate">
$ ghci test.hs
&#x5B;1 of 2] Compiling Main             ( test.hs, interpreted )
Ok, one module loaded.
ghci&gt; main
&quot;Hello World!&quot;
</pre></div>


<p class="wp-block-paragraph">GHCiを立ち上げた状態でHaskellプログラムを読み込む場合には「<span class="marker"><strong><code>:l</code></strong></span>」または「<span class="marker"><strong><code>:load</code></strong></span>」コマンドを使用します。</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; gutter: false; highlight: [2]; title: ; notranslate">
$ ghci
ghci&gt; :l test.hs
&#x5B;1 of 2] Compiling Main             ( test.hs, interpreted )
Ok, one module loaded.
ghci&gt; main
&quot;Hello World!&quot;
</pre></div>


<h3 class="wp-block-heading">型を表示する (<code>:t</code> または <code>:type</code>)</h3>



<p class="wp-block-paragraph">Haskellでは、強力な型システムが特徴的な関数型プログラミング言語です。そのため、型の情報を調べて正確に把握することは非常に重要になります。GHCiで、型を調べる際には「<span class="marker"><strong><code>:t</code></strong></span>」または「<span class="marker"><strong><code>:type</code></strong></span>」コマンドを使用します。</p>



<h4 class="wp-block-heading">式の型を表示する</h4>



<p class="wp-block-paragraph">Haskellでは、単一の値、例えば数値や文字列、またはより複雑な関数の呼び出しなど、評価されるあらゆるものを式（expression）と呼びます。以下のように、Haskellでの式の型を確認することができます。</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; gutter: false; highlight: [2]; title: ; notranslate">
$ ghci
ghci&gt; :t 10
10 :: Num a =&gt; a
</pre></div>


<p class="wp-block-paragraph">上記では、数値<code>10</code>が<code>Num</code>型クラスの任意のインスタンス<code>a</code>であることを示しています。これは、<code>10</code>が整数(<code>Int</code>)や倍精度浮動小数点数(<code>Double</code>)等のその他 <code>Num</code>型クラスのインスタンスである任意の数値型であることを意味します。</p>



<p class="wp-block-paragraph">この型シグネチャは、<code>10</code>が特定の型に限定されていないことを示していて、Haskellの型推論システムがその文脈に応じて適切な具体的な型を選択できるようにします。</p>



<h4 class="wp-block-heading">関数の型を表示する</h4>



<p class="wp-block-paragraph">関数の型を表示する場合には、以下のように確認することができます。以下は、<code>reverse</code>関数の型を確認してみた例です。</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; gutter: false; highlight: [2]; title: ; notranslate">
$ ghci
ghci&gt; :t reverse
reverse :: &#x5B;a] -&gt; &#x5B;a]
</pre></div>


<p class="wp-block-paragraph"><code>reverse :: [a] -&gt; [a]</code>は、Haskellの型シグネチャで、<code>reverse</code>関数が任意の型<code>a</code>のリスト（<code>[a]</code>）を受け取り、同じ型の要素を持つ新しいリストを返すことを意味しています。</p>



<p class="wp-block-paragraph">この型シグネチャは、<code>reverse</code>関数が型に依存しない汎用関数であることを示しており、任意の型のリストに適用できることを意味しています。</p>



<h3 class="wp-block-heading">型がどの型クラスのインスタンスかを表示する (<code>:instances</code>)</h3>



<p class="wp-block-paragraph">Haskellでは、型クラスのインスタンスとなっている型があります。型がどの型クラスのインスタンスとなっているかを確認したい場合には、「<span class="marker"><strong><code>:instances</code></strong></span>」コマンドを使用します。</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; gutter: false; highlight: [2]; title: ; notranslate">
$ ghci
ghci&gt; :instances Int
instance Bounded Int -- Defined in ‘GHC.Enum’
instance Read Int -- Defined in ‘GHC.Read’
instance Enum Int -- Defined in ‘GHC.Enum’
instance Integral Int -- Defined in ‘GHC.Real’
instance Num Int -- Defined in ‘GHC.Num’
instance Real Int -- Defined in ‘GHC.Real’
instance Show Int -- Defined in ‘GHC.Show’
instance Eq Int -- Defined in ‘GHC.Classes’
instance Ord Int -- Defined in ‘GHC.Classes’
</pre></div>


<p class="wp-block-paragraph">上記例では、<code>Int</code>型は、<code>Bounded</code>、<code>Read</code>、<code>Enum</code>、<code>Integral</code>、<code>Num</code>、<code>Real</code>、<code>Show</code>、<code>Eq</code>、<code>Ord</code>といった型クラスのインスタンスとなっていることを示しています。</p>



<p class="wp-block-paragraph">このようにどの型クラスのインスタンスかを確認することで、その型が有する特徴を把握することができるようになります。</p>



<h3 class="wp-block-heading">情報を表示する (<code>:info</code>)</h3>



<p class="wp-block-paragraph">指定した識別子（変数、関数、型、型クラス等）に関する詳細情報を確認したい場合には、「<span class="marker"><strong><code>:info</code></strong></span>」コマンドを使用します。以下では、いくつかの例を用いて紹介します。</p>



<p class="wp-block-paragraph">以下結果を見てもらうと分かりますが<code>:info</code>コマンドは、<code>:type</code>や<code>:instances</code>を包含したような情報を提供してくれます。</p>



<h4 class="wp-block-heading">変数の情報</h4>



<p class="wp-block-paragraph">変数の情報は、以下のように確認できます。</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; gutter: false; highlight: [3]; title: ; notranslate">
$ ghci
ghci&gt; let x = 10
ghci&gt; :info x
x :: Num a =&gt; a         -- Defined at &amp;lt;interactive&gt;:1:5
</pre></div>


<p class="wp-block-paragraph">上記例では、GHCi上で定義した<code>x</code>について情報を表示しています。<code>x</code>は、<code>Num</code>型クラスの任意のインスタンス<code>a</code>であることを示しています。また、定義されている場所に関する情報も付与されています。</p>



<h4 class="wp-block-heading">関数の情報</h4>



<p class="wp-block-paragraph">関数の情報は、以下のように確認できます。以下は、<code>reverse</code>関数の情報を確認してみた例です。</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; gutter: false; highlight: [2]; title: ; notranslate">
$ ghci
ghci&gt; :info reverse
reverse :: &#x5B;a] -&gt; &#x5B;a] 	-- Defined in ‘GHC.List’
</pre></div>


<p class="wp-block-paragraph">結果としては、<code>:type</code>コマンドでの結果と似ていますが、リストの定義情報が提示されているなど追加の情報が表示されています。<code>:type</code>コマンドが型の情報を表示するのに対して、<code>:info</code>コマンドはより詳細な情報を表示します。</p>



<h4 class="wp-block-heading">型の情報</h4>



<p class="wp-block-paragraph">型の情報は、以下のように確認できます。以下は、<code>Maybe</code>型の情報を確認してみた例です。</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; gutter: false; highlight: [2]; title: ; notranslate">
$ ghci
ghci&gt; :info Maybe
type Maybe :: * -&gt; *
data Maybe a = Nothing | Just a
  	-- Defined in ‘GHC.Maybe’
instance Semigroup a =&gt; Monoid (Maybe a) -- Defined in ‘GHC.Base’
instance Semigroup a =&gt; Semigroup (Maybe a)
  -- Defined in ‘GHC.Base’
instance Foldable Maybe -- Defined in ‘Data.Foldable’
instance Traversable Maybe -- Defined in ‘Data.Traversable’
instance Read a =&gt; Read (Maybe a) -- Defined in ‘GHC.Read’
instance Show a =&gt; Show (Maybe a) -- Defined in ‘GHC.Show’
instance Applicative Maybe -- Defined in ‘GHC.Base’
instance Functor Maybe -- Defined in ‘GHC.Base’
instance MonadFail Maybe -- Defined in ‘Control.Monad.Fail’
instance Monad Maybe -- Defined in ‘GHC.Base’
instance Eq a =&gt; Eq (Maybe a) -- Defined in ‘GHC.Maybe’
instance Ord a =&gt; Ord (Maybe a) -- Defined in ‘GHC.Maybe’
</pre></div>


<p class="wp-block-paragraph">上記では、<code>Maybe</code>の定義情報や、<code>Maybe</code>がどの型クラスのインスタンスかの情報を提供してくれます。</p>



<h4 class="wp-block-heading">型クラスの情報</h4>



<p class="wp-block-paragraph">型クラスの情報は、以下のように確認できます。以下は、<code>Monad</code>型クラスの情報を確認してみた例です。</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; gutter: false; highlight: [2]; title: ; notranslate">
$ ghci
ghci&gt; :info Monad
type Monad :: (* -&gt; *) -&gt; Constraint
class Applicative m =&gt; Monad m where
  (&gt;&gt;=) :: m a -&gt; (a -&gt; m b) -&gt; m b
  (&gt;&gt;) :: m a -&gt; m b -&gt; m b
  return :: a -&gt; m a
  {-# MINIMAL (&gt;&gt;=) #-}
  	-- Defined in ‘GHC.Base’
instance Monoid a =&gt; Monad ((,) a) -- Defined in ‘GHC.Base’
instance (Monoid a, Monoid b) =&gt; Monad ((,,) a b)
  -- Defined in ‘GHC.Base’
instance (Monoid a, Monoid b, Monoid c) =&gt; Monad ((,,,) a b c)
  -- Defined in ‘GHC.Base’
instance Monad ((-&gt;) r) -- Defined in ‘GHC.Base’
instance Monad IO -- Defined in ‘GHC.Base’
instance Monad Maybe -- Defined in ‘GHC.Base’
instance Monad Solo -- Defined in ‘GHC.Base’
instance Monad &#x5B;] -- Defined in ‘GHC.Base’
instance Monad (Either e) -- Defined in ‘Data.Either’
</pre></div>


<p class="wp-block-paragraph">上記では、<code>Monad</code>のクラス定義情報や、<code>Monad</code>がどの型クラスのインスタンスかの情報を提供してくれます。</p>



<h3 class="wp-block-heading">型コンストラクタのカインドを表示する (<code>:kind</code>)</h3>



<p class="wp-block-paragraph">Haskellにおいて型コンストラクタとは、型を生成するためのもので他の型を引数として取ることができます。カインドとは、型コンストラクタが取ることのできる型引数を表すもので、型の「型」のようなものです。</p>



<p class="wp-block-paragraph">GHCiの「<span class="marker"><strong><code>:kind</code></strong></span>」コマンドを使用することで調べることができます。</p>



<h4 class="wp-block-heading">単純な型コンストラクタ</h4>



<p class="wp-block-paragraph">単純な型で型コンストラクタを調べてみます。以下は、<code>Int</code>のカインドを調べる例です。</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; gutter: false; highlight: [2]; title: ; notranslate">
$ ghci
ghci&gt; :kind Int
Int :: *
</pre></div>


<p class="wp-block-paragraph"><code>Int</code>のような具体的な型がカインド「<code>*</code>」であることは、追加の型引数を取らないことを意味しています。</p>



<h4 class="wp-block-heading">引数がある型コンストラクタ　(引数が1つ)</h4>



<p class="wp-block-paragraph">引数がありパラメータ化されている方として代表的なものとしては、<code>Maybe</code>型があります。以下は、Maybe型のカインドを調べる例です。</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; gutter: false; highlight: [2]; title: ; notranslate">
$ ghci
ghci&gt; :kind Maybe
Maybe :: * -&gt; *
</pre></div>


<p class="wp-block-paragraph">Maybeのような引数を1つ取る型のカインドは「<code>* -> *</code>」というようになります。<code>Maybe</code>では、<code>Maybe Int</code>といった表記を見たことがあると思いますが、これは<code>Maybe</code>が<code>Int</code>を引数に取っていることを意味します。</p>



<p class="wp-block-paragraph"><code>Maybe</code>は欠損値に対応するために、値が存在するかもしれないことを表現するものであるため、<code>Maybe Int</code>は、<code>Int</code>が存在するかもしれないし、存在しないかもしれないということを表現します。</p>



<h4 class="wp-block-heading">複数の引数がある型コンストラクタ (引数が2つ)</h4>



<p class="wp-block-paragraph">複数の引数を受け取る方もあり、代表的なものとしては、<code>Either</code>型があります。以下は、<code>Either</code>型のカインドを調べる例です。</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; gutter: false; highlight: [2]; title: ; notranslate">
$ ghci
ghci&gt; :kind Either
Either :: * -&gt; * -&gt; *
</pre></div>


<p class="wp-block-paragraph"><code>Either</code>のような引数を2つ取る型のカインドは「<code>* -&gt; * -&gt; *</code>」というようになります。<code>Either</code>では、<code>Either String Int</code>といった表記を見たことがあると思いますが、これは<code>Either</code>が<code>String</code>と<code>Int</code>を引数に取っていることを意味します。</p>



<p class="wp-block-paragraph"><code>Either</code>は、2つの異なる型の値のいずれかを含むことを表現するものであるため、<code>Either String Int</code>は、<code>String</code>か<code>Int</code>のいずれかということになります。例えば、エラー処理においてエラー文字列を返すか、成功した値を返すような場合に使用します。</p>



<h2 class="wp-block-heading">まとめ</h2>



<p class="wp-block-paragraph">HaskellコンパイラであるGHC (Glasgow Haskell Compiler)のインタラクティブ対話型シェルの<span class="marker"><strong>GHCiの主要なコマンド</strong></span>について紹介しました。</p>



<p class="wp-block-paragraph">本記事では、よく使うであろう代表的なコマンドについて紹介しています。Haskellでは、GHCiで各モジュールの関数を動作確認し、確認が終わったらGHCでコンパイルするという開発の流れが一般的です。</p>



<p class="wp-block-paragraph">GHCiには様々なコマンドがありますが、主要なコマンドを把握しておくことは非常に役立ちますので参考にしてもらえればと思います。</p>



<figure class="wp-block-embed is-type-wp-embed is-provider-haskell-tech wp-block-embed-haskell-tech"><div class="wp-block-embed__wrapper">
https://haskell-tech.nkhn37.net/haskell-introduction/
</div></figure>
]]></content:encoded>
					
					<wfw:commentRss>https://haskell-tech.nkhn37.net/haskell-ghci-command-list/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Haskellのインストール方法 （Linux）</title>
		<link>https://haskell-tech.nkhn37.net/haskell-install-linux/</link>
					<comments>https://haskell-tech.nkhn37.net/haskell-install-linux/#respond</comments>
		
		<dc:creator><![CDATA[naoki-hn]]></dc:creator>
		<pubDate>Fri, 05 Jan 2024 21:00:00 +0000</pubDate>
				<category><![CDATA[開発環境]]></category>
		<category><![CDATA[ghc]]></category>
		<category><![CDATA[ghci]]></category>
		<category><![CDATA[ghcup]]></category>
		<category><![CDATA[stack]]></category>
		<category><![CDATA[ubuntu]]></category>
		<guid isPermaLink="false">https://haskell-tech.nkhn37.net/?p=79</guid>

					<description><![CDATA[HaskellをLinuxにインストールする方法について解説します。具体的には、Ubuntu 22.04 LTSを対象にします。 Haskellの環境構築 Haskellは、高度な純粋関数型プログラミング言語で、強力な型]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph"><span class="marker"><strong>HaskellをLinuxにインストールする方法</strong></span>について解説します。具体的には、Ubuntu 22.04 LTSを対象にします。 </p>



<h2 class="wp-block-heading">Haskellの環境構築</h2>



<p class="wp-block-paragraph"><span class="marker"><strong>Haskell</strong></span>は、高度な純粋関数型プログラミング言語で、強力な型システムと静的型付けを特徴としています。関数型プログラミングを学ぶには最適な言語のひとつです。</p>



<p class="wp-block-paragraph">本記事では、Haskellの開発環境をLinuxで用意するための方法について紹介しますが、Windowsでも環境は用意できます。Windowsにインストールする方法は「<a href="https://haskell-tech.nkhn37.net/haskell-install-windows/" target="_blank" rel="noreferrer noopener">Haskellのインストール方法（Windows）</a>」でまとめているのでLinuxをお使いの方はこちらを参考にしてください。</p>



<p class="wp-block-paragraph">なお、Haskellは、WindowsとLinuxの両方の環境で使用されますが、一般的にはLinuxがより好まれる傾向にあります。これは、多くの開発者やシステム管理者がLinuxを好むため、より多くのオープンソースプロジェクトや開発ツールがLinux環境に最適化されているためです。HaskellはどちらのOSでも動作しますが、Linux環境では特にパッケージ管理や環境設定が容易であると言われています。</p>



<p class="wp-block-paragraph">ただし、これは一般的な傾向であり、特定のプロジェクトやチームによってはWindows環境でHaskellを積極的に使用している場合もあります。また、開発者の個人的な好みや特定のプロジェクトの要件によっても、使用されるOSは異なる可能性がありますので必要に応じて検討してください。</p>



<p class="wp-block-paragraph">本記事では、<span class="marker"><strong>Haskellの開発環境をLinuxで用意する方法</strong></span>について説明します。なお、本記事の前提として使用したOSとしては、Ubuntu 22.04.3 LTS (64bit)とします。なお、異なるバージョンのUbuntuや同じDebian系のLinuxのディストリビューションであれば同様にインストールができる可能性があります。</p>



<h3 class="wp-block-heading">Haskellのインストール</h3>



<p class="wp-block-paragraph">Haskell関連のインストールは、Haskellの<a href="https://www.haskell.org/downloads/" target="_blank" rel="noreferrer noopener">公式ダウンロードページ</a>の情報を参考に行います。</p>


<div class="wp-block-image">
<figure class="aligncenter size-large"><img decoding="async" width="1024" height="763" src="https://haskell-tech.nkhn37.net/wp-content/uploads/2024/01/image-1024x763.png" alt="Haskell Download" class="wp-image-82" srcset="https://haskell-tech.nkhn37.net/wp-content/uploads/2024/01/image-1024x763.png 1024w, https://haskell-tech.nkhn37.net/wp-content/uploads/2024/01/image-300x224.png 300w, https://haskell-tech.nkhn37.net/wp-content/uploads/2024/01/image-768x572.png 768w, https://haskell-tech.nkhn37.net/wp-content/uploads/2024/01/image.png 1189w, https://haskell-tech.nkhn37.net/wp-content/uploads/2024/01/image-1024x763.png 856w" sizes="(max-width: 1024px) 100vw, 1024px" /><figcaption class="wp-element-caption"><a href="https://www.haskell.org/downloads/" target="_blank" rel="noreferrer noopener">公式ダウンロードページ</a>　※記事執筆時点のため画面構成は変わっている可能性があります</figcaption></figure>
</div>


<p class="wp-block-paragraph">本記事では、GHCのインストーラーであるGHCupを使用してGHCのインストールを行います。</p>



<p class="wp-block-paragraph"><span class="marker"><strong>GHC (Glasgow Haskell Compiler)</strong></span>は、最も広く使われているHaskellコンパイラであり、<span class="marker"><strong>GHCup</strong></span>は、Haskell環境構築のためのインストーラのことです。</p>



<h3 class="wp-block-heading">インストール手順</h3>



<p class="wp-block-paragraph">Haskellダウンロードページの「GHCup」ボタンをクリックすると、<a href="https://www.haskell.org/ghcup/" target="_blank" rel="noreferrer noopener">GHCup</a>のページに遷移します。初期表示時にはWindowsのインストールに関する表示のみとなっていますが、「Show all platforms」ボタンをクリックすることで、Linux等に関するインストールコマンドも表示されます。</p>


<div class="wp-block-image">
<figure class="aligncenter size-large"><img decoding="async" width="1024" height="620" src="https://haskell-tech.nkhn37.net/wp-content/uploads/2024/01/image-1-1024x620.png" alt="Haskell Install" class="wp-image-83" srcset="https://haskell-tech.nkhn37.net/wp-content/uploads/2024/01/image-1-1024x620.png 1024w, https://haskell-tech.nkhn37.net/wp-content/uploads/2024/01/image-1-300x182.png 300w, https://haskell-tech.nkhn37.net/wp-content/uploads/2024/01/image-1-768x465.png 768w, https://haskell-tech.nkhn37.net/wp-content/uploads/2024/01/image-1.png 1153w, https://haskell-tech.nkhn37.net/wp-content/uploads/2024/01/image-1-1024x620.png 856w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>
</div>


<p class="wp-block-paragraph">Ubuntuのターミナル(端末)でインストールのための以下コマンドを実行します。上記画面のコピーボタンからコピーできます。</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; gutter: false; title: ; notranslate">
curl --proto &#039;=https&#039; --tlsv1.2 -sSf https://get-ghcup.haskell.org | sh
</pre></div>


<p class="wp-block-paragraph">curlは、URLからデータを転送するためのコマンドラインツールです。上記のコマンドを簡単に説明すると以下のようになります。</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>コマンド</th><th>概要</th></tr></thead><tbody><tr><td><code>--proto '=https'</code></td><td>HTTPSプロトコルを使用する</td></tr><tr><td><code>--tlsv1.2</code></td><td>TLS(Transport Layer Security)のバージョン1.2を使用する</td></tr><tr><td><code>-sSf</code></td><td><code>-s</code> (サイレントモード)、<code>-S</code>(エラーが発生した場合にエラーメッセージを表示)、<code>-f</code> (サーバーエラーが発生した場合に失敗)というオプションの組み合わせ</td></tr><tr><td><code>https://get-ghcup.haskell.org</code></td><td>GHCupのURL</td></tr><tr><td><code>| sh</code></td><td>シェルにパイプでつなげて実行</td></tr></tbody></table></figure>



<div class="wp-block-jin-gb-block-box concept-box5">
<p class="wp-block-paragraph">curlコマンドが見つからず実行できない場合は、以下でcurlをインストールしてから再度実行してください。</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; gutter: false; title: ; notranslate">
sudo apt install curl
</pre></div></div>



<p class="wp-block-paragraph">curlを実行すると以下のような画面が表示されます。指示に従って「ENTER」をクリックしてください。</p>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img decoding="async" width="837" height="416" src="https://haskell-tech.nkhn37.net/wp-content/uploads/2024/01/image-3.png" alt="Haskell Install" class="wp-image-88"/></figure>
</div>


<p class="wp-block-paragraph">bash shellの設定ファイルである.bashrcに自動で必要なパスを追加するか確認があるため、「P」を入力してENTERをクリックします。</p>


<div class="wp-block-image">
<figure class="aligncenter size-large"><img decoding="async" width="1024" height="212" src="https://haskell-tech.nkhn37.net/wp-content/uploads/2024/01/image-6-1024x212.png" alt="Haskell Install" class="wp-image-91" srcset="https://haskell-tech.nkhn37.net/wp-content/uploads/2024/01/image-6-1024x212.png 1024w, https://haskell-tech.nkhn37.net/wp-content/uploads/2024/01/image-6-300x62.png 300w, https://haskell-tech.nkhn37.net/wp-content/uploads/2024/01/image-6-768x159.png 768w, https://haskell-tech.nkhn37.net/wp-content/uploads/2024/01/image-6.png 1200w, https://haskell-tech.nkhn37.net/wp-content/uploads/2024/01/image-6-1024x212.png 856w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>
</div>


<p class="wp-block-paragraph"><span class="marker"><strong>haskell-language-server (HLS)</strong></span>のインストールをするか確認があります。HLSは、Haskellプログラミング言語のための高度な言語サーバーで、Haskell開発において多くの利点を提供してくれるため、インストールしておきます。「Y」を入力してENTERをクリックします。</p>



<figure class="wp-block-image size-full"><img decoding="async" width="861" height="215" src="https://haskell-tech.nkhn37.net/wp-content/uploads/2024/01/image-7.png" alt="Haskell Install" class="wp-image-92" srcset="https://haskell-tech.nkhn37.net/wp-content/uploads/2024/01/image-7.png 861w, https://haskell-tech.nkhn37.net/wp-content/uploads/2024/01/image-7-300x75.png 300w, https://haskell-tech.nkhn37.net/wp-content/uploads/2024/01/image-7-768x192.png 768w, https://haskell-tech.nkhn37.net/wp-content/uploads/2024/01/image-7.png 856w" sizes="(max-width: 861px) 100vw, 861px" /></figure>



<p class="wp-block-paragraph">stackの設定を実行するか確認があります。「Y」を入力して有効化するようにします。stackは、Haskellのプロジェクト管理およびビルドのためのツールです。</p>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="255" src="https://haskell-tech.nkhn37.net/wp-content/uploads/2024/01/image-8-1024x255.png" alt="Haskell Install" class="wp-image-94" srcset="https://haskell-tech.nkhn37.net/wp-content/uploads/2024/01/image-8-1024x255.png 1024w, https://haskell-tech.nkhn37.net/wp-content/uploads/2024/01/image-8-300x75.png 300w, https://haskell-tech.nkhn37.net/wp-content/uploads/2024/01/image-8-768x191.png 768w, https://haskell-tech.nkhn37.net/wp-content/uploads/2024/01/image-8.png 1200w, https://haskell-tech.nkhn37.net/wp-content/uploads/2024/01/image-8-1024x255.png 856w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">インストールの確認が出るので、ENTERをクリックしてインストールを開始します。</p>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="119" src="https://haskell-tech.nkhn37.net/wp-content/uploads/2024/01/image-9-1024x119.png" alt="" class="wp-image-95" srcset="https://haskell-tech.nkhn37.net/wp-content/uploads/2024/01/image-9-1024x119.png 1024w, https://haskell-tech.nkhn37.net/wp-content/uploads/2024/01/image-9-300x35.png 300w, https://haskell-tech.nkhn37.net/wp-content/uploads/2024/01/image-9-768x89.png 768w, https://haskell-tech.nkhn37.net/wp-content/uploads/2024/01/image-9.png 1207w, https://haskell-tech.nkhn37.net/wp-content/uploads/2024/01/image-9-1024x119.png 856w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">インストールが開始されます。ダウンロードなどのコマンドが順次表示されていくので、しばらく待ちましょう。</p>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="176" src="https://haskell-tech.nkhn37.net/wp-content/uploads/2024/01/image-10-1024x176.png" alt="Haskell Install" class="wp-image-96" srcset="https://haskell-tech.nkhn37.net/wp-content/uploads/2024/01/image-10-1024x176.png 1024w, https://haskell-tech.nkhn37.net/wp-content/uploads/2024/01/image-10-300x52.png 300w, https://haskell-tech.nkhn37.net/wp-content/uploads/2024/01/image-10-768x132.png 768w, https://haskell-tech.nkhn37.net/wp-content/uploads/2024/01/image-10.png 1200w, https://haskell-tech.nkhn37.net/wp-content/uploads/2024/01/image-10-1024x176.png 856w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">インストールがすべて完了して以下のような表示になればHaskellのインストールは完了です。</p>



<figure class="wp-block-image size-full"><img decoding="async" width="749" height="315" src="https://haskell-tech.nkhn37.net/wp-content/uploads/2024/01/image-12.png" alt="Haskell Install" class="wp-image-98"/></figure>



<p class="wp-block-paragraph">インストールの途中で確認にあった.bashrcには、パスの情報が追加されていますが、反映するために以下を実行します。</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; gutter: false; title: ; notranslate">
source ~/.bashrc
</pre></div>


<p class="wp-block-paragraph">上記でHaskellのインストールは一通り完了です。</p>



<div class="wp-block-jin-gb-block-box concept-box5">
<p class="wp-block-paragraph"><strong>【インストール時のエラー】</strong></p>



<p class="wp-block-paragraph">インストール時に以下のようなエラーが発生する場合があります。（私はここで理由が分からず少し時間がかかりました。）</p>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="95" src="https://haskell-tech.nkhn37.net/wp-content/uploads/2024/01/image-11-1024x95.png" alt="Haskell Install Error" class="wp-image-97" srcset="https://haskell-tech.nkhn37.net/wp-content/uploads/2024/01/image-11-1024x95.png 1024w, https://haskell-tech.nkhn37.net/wp-content/uploads/2024/01/image-11-300x28.png 300w, https://haskell-tech.nkhn37.net/wp-content/uploads/2024/01/image-11-768x71.png 768w, https://haskell-tech.nkhn37.net/wp-content/uploads/2024/01/image-11.png 1099w, https://haskell-tech.nkhn37.net/wp-content/uploads/2024/01/image-11-1024x95.png 856w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">理由としてはコンパイルに必要なmakeやclangが不足していたためでした。上記のようなエラーが発生した場合には、<code>sudo apt install</code>を使ってmakeやclangをインストールしてから、再度Haskellのインストールを実行してみてください。</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; gutter: false; title: ; notranslate">
sudo apt install make
</pre></div>

<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; gutter: false; title: ; notranslate">
sudo apt install clang
</pre></div>


<p class="wp-block-paragraph">環境や状況によっては、上記変更で改善しない場合があるかもしれません。同じようなエラーが発生した場合には、試してみていただければと思います。</p>
</div>



<h3 class="wp-block-heading">GHCiの実行</h3>



<p class="wp-block-paragraph">Haskellの実行環境の確認する方法としては、GHCのインタラクティブな対話型シェルであるGHCiを確認してみることです。ターミナル(端末)で以下を実行してみてください。</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; gutter: false; title: ; notranslate">
ghci
</pre></div>


<p class="wp-block-paragraph">以下のように表示されれば、GHCのインストールはできています。</p>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img decoding="async" width="705" height="213" src="https://haskell-tech.nkhn37.net/wp-content/uploads/2024/01/image-13.png" alt="" class="wp-image-101"/></figure>
</div>


<p class="wp-block-paragraph">上記実行結果を見てみると、libgmp.soというGMP（GNU Multiple Precision Arithmetic Library）がシステム上に存在しない、または見つからないというwarningが表示されています。</p>



<p class="wp-block-paragraph">GMPは、任意精度の数値計算を行うためのフリーでオープンソースのソフトウェアライブラリで、暗号学、科学技術計算、数式処理システム、アルゴリズム研究など、高精度計算が必要な多くの分野で使用されています。以下コマンドでインストールしておきましょう。</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; gutter: false; title: ; notranslate">
sudo apt install libgmp-dev
</pre></div>


<p class="wp-block-paragraph">上記を実行後に再度「ghci」を実行するとwarningは消えて、GHCiを使用することができるようになります。</p>


<div class="wp-block-image">
<figure class="aligncenter size-full is-resized"><img decoding="async" width="643" height="52" src="https://haskell-tech.nkhn37.net/wp-content/uploads/2024/01/image-14.png" alt="" class="wp-image-102" style="width:700px;height:auto"/></figure>
</div>


<p class="wp-block-paragraph">GHCiは、インタラクティブな対話型シェルのため、その場で計算を実行したり、Haskellプログラム(.hs)をロードして実行するといったことが可能です。「<a href="https://haskell-tech.nkhn37.net/haskell-ghci-command-list/" target="_blank" rel="noreferrer noopener">GHCiの主要なコマンド</a>」でGHCiの主要なコマンドを説明しているので、参考にして触ってみてもらえると面白いかと思います。</p>



<h3 class="wp-block-heading">Haskellの開発環境の準備</h3>



<p class="wp-block-paragraph">Haskellがインストールできたら開発環境を準備して実際の開発をします。</p>



<p class="wp-block-paragraph">Haskellの開発環境としては、他の言語の開発でもよく使用されるVisual Studio Code (VSCode)が使用できます。VSCodeは、拡張機能の豊富さ、そしてHaskell Language Serverとの互換性により、シンタックスハイライト、コード補完などの機能が利用できます。</p>



<p class="wp-block-paragraph">VSCodeでの環境の準備方法については「<a href="https://haskell-tech.nkhn37.net/vscode-haskell-environment-setting/" target="_blank" rel="noreferrer noopener">VSCodeでHaskellの開発環境を構築する方法</a>」でまとめていますので参考にしてください。</p>



<h2 class="wp-block-heading">まとめ</h2>



<p class="wp-block-paragraph"><span class="marker"><strong>HaskellをLinuxにインストールする方法</strong></span>について解説しました。具体的には、Ubuntu 22.04 LTSを対象にしています。</p>



<p class="wp-block-paragraph">Haskellは、高度な純粋関数型プログラミング言語で、強力な型システムと静的型付けを特徴としています。Haskell環境を構築して、是非Haskellでのプログラム開発や学習に役立ててもらえたらと思います。</p>



<p class="wp-block-paragraph">なお、記事冒頭でも紹介したようにHaskellはWindowsでも環境を構築できます。Windowsにインストールしたい場合は「<a href="https://haskell-tech.nkhn37.net/haskell-install-windows/" target="_blank" rel="noreferrer noopener">Haskellのインストール方法（Windows）</a>」を参考にしてください。</p>



<figure class="wp-block-embed is-type-wp-embed is-provider-haskell-tech wp-block-embed-haskell-tech"><div class="wp-block-embed__wrapper">
https://haskell-tech.nkhn37.net/haskell-introduction/
</div></figure>
]]></content:encoded>
					
					<wfw:commentRss>https://haskell-tech.nkhn37.net/haskell-install-linux/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>

<!--
Performance optimized by W3 Total Cache. Learn more: https://www.boldgrid.com/w3-total-cache/?utm_source=w3tc&utm_medium=footer_comment&utm_campaign=free_plugin

Disk: Enhanced  を使用したページ キャッシュ

Served from: haskell-tech.nkhn37.net @ 2026-07-26 08:15:49 by W3 Total Cache
-->