-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathintro.xml
More file actions
205 lines (157 loc) · 13.6 KB
/
intro.xml
File metadata and controls
205 lines (157 loc) · 13.6 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
<?xml version="1.0" encoding="UTF-8"?>
<chapter id="introduction-GHC">
<title>GHCの紹介</title>
<para>これはグラスゴーHaskellコンパイラ(GHC)という、<ulink url="http://www.haskell.org/">Haskell 98</ulink>のための対話的・一括処理的なコンパイルシステムの利用の手引きである。</para>
<para>GHCは主に二つの構成要素から成っている。対話的Haskellインタプリタ(GHCiとも呼ばれる。説明は<xref linkend="ghci"/>にある)と、一括処理コンパイラ(説明は<xref linkend="using-ghc"/>にある)である。GHCは実際には単一のプログラムであり、走るときのオプションによって、対話的システムを提供したり、一括処理システムを提供したりする。</para>
<para>一括処理コンパイラはGHCiと組み合わせて使うことができる。対話的セッション中にコンパイル済みモジュールをロードすることができ、ロードされたものは解釈実行コードと同じように扱える。実際、GHCiを使うとき、ライブラリコードの大部分はコンパイル済みのものが使われている。この機能のおかげで、二つの方法の利点を両方とも享受することができる。すなわち、ライブラリコードは高速な実行のためにあらかじめコンパイルしておき、同時に、活発に開発されている部分を繰り返しコンパイルするのに掛かる時間を省く、ということができる。</para>
<para>GHCはたくさんの言語拡張をサポートする。例えば、並列実行、外部関数インタフェース、例外など。これに加えて、多引数の型クラス、局所的な全称/存在量化、関数従属、スコープを持つ型変数、明示的な非ボックス化型といった型システムの拡張もある。これらの説明は全て<xref linkend="ghc-language-features"/>にある。</para>
<para>GHCには総合的な最適化器があり、もしあなたが本気でそのつもり(で、時間に余裕がある)なら、GHCはとても速いコードを出力することができる。一方、デフォルトのオプションは、生成されるコードを最適化するのにあまり熱心にならないようにして、なるべく速くコンパイルを行うというものである。(それでもGHCを「速いコンパイラ」だとは思ってくれないだろうけど 笑)</para>
<para>GHCのプロファイルシステムは、「コスト集約点スタック」をサポートする。これは、Haskellプログラムのプロファイルをコールグラフ状の構造として見るためのものである。より詳しくは、<xref linkend="profiling"/>を参照せよ。</para>
<para>GHCにはいくつかのライブラリが付属している。これらのライブラリの説明は別の文書にある。</para>
<sect1 id="getting">
<title>GHCを入手する</title>
<para><ulink url="http://www.haskell.org/ghc/">GHC home page</ulink>に行って、「download」のリンクを辿れば、あなたのプラットフォーム用のGHCをダウンロードできる。</para>
<para>別の選択肢として、自分でGHCをビルドしたいなら、<ulink url="http://ghc.haskell.org/trac/ghc/wiki/Building">GHC Building Guide</ulink>に行って、どうやってソースを入手してあなたのシステム上でビルドするかを知ればよい。GHCはそれ自体Haskellで書かれているので、ビルドするにしてもGHCをインストールする必要があることに注意。</para>
</sect1>
<sect1 id="mailing-lists-GHC">
<title>メタ情報: ウェブサイト、メーリングリストなど</title>
<indexterm><primary>mailing lists, Glasgow Haskell</primary></indexterm>
<indexterm><primary>Glasgow Haskell mailing lists</primary></indexterm>
<para>以下のURLは興味深いかもしれない。</para>
<itemizedlist>
<listitem>
<para><ulink url="http://www.haskell.org/ghc/">GHC home
page</ulink></para>
</listitem>
<listitem>
<para><ulink url="http://ghc.haskell.org/trac/ghc/">GHC Developers Home</ulink> (開発者向け情報、wiki、バグトラッキングシステム)</para>
</listitem>
</itemizedlist>
<para>我々は、GHCに関する以下のメーリングリストを運営している。適切と思うものが有れば、是非参加して頂きたい。</para>
<variablelist>
<varlistentry>
<term>glasgow-haskell-users:</term>
<listitem>
<para>これはGHCの利用者が互いにおしゃべりをする場である。なにかGHCに関する質問があるなら、先に<ulink url="http://www.haskell.org/haskellwiki/GHC/FAQ">FAQ</ulink>を探してみてほしい。</para>
<variablelist>
<varlistentry>
<term>リストのメールアドレス:</term>
<listitem>
<para><email>glasgow-haskell-users@haskell.org</email></para>
</listitem>
</varlistentry>
<varlistentry>
<term>加入:</term>
<listitem>
<para><ulink
url="http://www.haskell.org/mailman/listinfo/glasgow-haskell-users"><literal>http://www.haskell.org/mailman/listinfo/glasgow-haskell-users</literal></ulink>.</para>
</listitem>
</varlistentry>
<varlistentry>
<term>管理メールアドレス:</term>
<listitem>
<para><email>glasgow-haskell-users-admin@haskell.org</email></para>
</listitem>
</varlistentry>
<varlistentry>
<term>リストのアーカイブ:</term>
<listitem>
<para><ulink
url="http://www.haskell.org/pipermail/glasgow-haskell-users/"><literal>http://www.haskell.org/pipermail/glasgow-haskell-users/</literal></ulink></para>
</listitem>
</varlistentry>
</variablelist>
</listitem>
</varlistentry>
<varlistentry>
<term>ghc-devs:</term>
<listitem>
<para>ここには筋金入りのGHC開発者たちがたむろしている。</para>
<variablelist>
<varlistentry>
<term>リストのメールアドレス:</term>
<listitem>
<para><email>ghc-devs@haskell.org</email></para>
</listitem>
</varlistentry>
<varlistentry>
<term>加入:</term>
<listitem>
<para><ulink
url="http://www.haskell.org/mailman/listinfo/ghc-devs"><literal>http://www.haskell.org/mailman/listinfo/ghc-devs</literal></ulink>.</para>
</listitem>
</varlistentry>
<varlistentry>
<term>管理メールアドレス:</term>
<listitem>
<para><email>ghc-devs-admin@haskell.org</email></para>
</listitem>
</varlistentry>
<varlistentry>
<term>リストのアーカイブ:</term>
<listitem>
<para><ulink
url="http://www.haskell.org/pipermail/ghc-devs/"><literal>http://www.haskell.org/pipermail/ghc-devs/</literal></ulink></para>
</listitem>
</varlistentry>
</variablelist>
</listitem>
</varlistentry>
</variablelist>
<para>他にもHaskellやGHCに関するメーリングリストがいくつか<literal>www.haskell.org</literal>で提供されている。完全な一覧は、<ulink url="http://www.haskell.org/mailman/listinfo/"><literal>http://www.haskell.org/mailman/listinfo/</literal></ulink>を見よ。</para>
<para>Usenetニュースグループの<literal>comp.lang.functional</literal>でもHaskell関連の議論が行われる。</para>
</sect1>
<sect1 id="bug-reporting">
<title>GHCのバグを報告する</title>
<indexterm><primary>bugs</primary><secondary>reporting</secondary>
</indexterm>
<indexterm><primary>reporting bugs</primary>
</indexterm>
<para>Glasgow Haskellは変わりゆくシステムであり、そこには必ずバグがある。バグを見つけたら、<ulink url="http://ghc.haskell.org/trac/ghc/wiki/ReportABug">このwikiページ</ulink>を見て、どうやって報告するかの情報を得ていただきたい。</para>
</sect1>
<sect1 id="version-numbering">
<title>GHCのバージョン番号付け規則</title>
<indexterm><primary>version, of ghc</primary></indexterm>
<para>GHCバージョン6.8以降、GHCのバージョン番号を割り当てるのに我々は次のような規則を採用している。</para>
<variablelist>
<varlistentry>
<term>安定版リリース</term>
<listitem>
<para>安定版ブランチには<literal><replaceable>x</replaceable>.<replaceable>y</replaceable></literal>と振られる。ここで、<replaceable>y</replaceable>は<emphasis>偶数</emphasis>である。安定版ブランチ<literal><replaceable>x</replaceable>.<replaceable>y</replaceable></literal>におけるリリースには<literal><replaceable>x</replaceable>.<replaceable>y</replaceable>.<replaceable>z</replaceable></literal>と振られ、ここで<replaceable>z</replaceable>(>=1)はパッチレベルの番号である。パッチレベルのリリースはバグ修正のみで、システム供給のコードへのプログラマ用インタフェースが変更されることはない。ただし、新しいパッチレベルリリースを古いリリースに上書きインストールした場合、古いライブラリに対してコンパイルされたコードは全てコンパイルし直さなければならない。</para>
<para>メジャーリリース<literal><replaceable>x</replaceable>.<replaceable>y</replaceable>.<replaceable>z</replaceable></literal>では、<literal>__GLASGOW_HASKELL__</literal>(<xref linkend="c-pre-processor"/>を参照)の値は整数<replaceable>xyy</replaceable>(もし<replaceable>y</replaceable>が一桁の数値なら、前に0が追加される。例えば、GHCバージョン6.8.2では、<literal>__GLASGOW_HASKELL__==608</literal>)である。</para>
<indexterm>
<primary><literal>__GLASGOW_HASKELL__</literal></primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry>
<term>安定版スナップショット</term>
<listitem>
<para>現在の安定版ブランチのスナップショットリリースを<ulink url="http://www.haskell.org/ghc/dist/stable/dist/">ダウンロード可能に</ulink>することがあるかもしれない。また、最新のソースは<ulink url="http://ghc.haskell.org/trac/ghc/wiki/Repositories">gitリポジトリ</ulink>から入手可能である。</para>
<para>安定版スナップショットリリースは<literal><replaceable>x</replaceable>.<replaceable>y</replaceable>.<replaceable>z</replaceable>.YYYYMMDD</literal>と名付けられる。ただし、<literal>YYYYMMDD</literal>はスナップショットのビルドに使われたソースの日付であり、<literal><replaceable>x</replaceable>.<replaceable>y</replaceable>.<replaceable>z+1</replaceable></literal>がそのブランチで次に行われるべきリリースである。例えば、<literal>6.8.1.20040225</literal>なら、<literal>6.8.2</literal>の開発中における<literal>6.8</literal>ブランチのスナップショットになる。</para>
<para>スナップショットリリースにおける<literal>__GLASGOW_HASKELL__</literal>の値は、整数<replaceable>xyy</replaceable>である。しかし、この値をテストする条件コードを書くべきではない。インタフェースは毎日のレベルで変わり、しかも<literal>__GLASGOW_HASKELL__</literal>ではより細かい精度の値を表せないから、<literal>__GLASGOW_HASKELL__</literal>の値をテストするなら、メジャーリリースの番号との間での大小・等値比較のみを行うべきである。</para>
</listitem>
</varlistentry>
<varlistentry>
<term>不安定版スナップショット</term>
<listitem>
<para>HEADのスナップショットリリースを<ulink url="http://www.haskell.org/ghc/dist/stable/dist/">ダウンロード可能に</ulink>することがあるかもしれない。また、最新のソースは<ulink url="http://ghc.haskell.org/trac/ghc/wiki/Repositories">gitリポジトリ</ulink>から入手可能である。</para>
<para>不安定版スナップショットリリースは<literal><replaceable>x</replaceable>.<replaceable>y</replaceable>.YYYYMMDD</literal>と名付けられる。ただし、<literal>YYYYMMDD</literal>はスナップショットのビルドに使われたソースの日付である。例えば、<literal>6.7.20040225</literal>なら、<literal>6.8</literal>ブランチを作る前のHEADのスナップショットになる。</para>
<para>スナップショットリリースにおける<literal>__GLASGOW_HASKELL__</literal>の値は、整数<replaceable>xyy</replaceable>である。しかし、この値をテストする条件コードを書くべきではない。インタフェースは毎日のレベルで変わり、しかも<literal>__GLASGOW_HASKELL__</literal>ではより細かい精度の値を表せないから、<literal>__GLASGOW_HASKELL__</literal>の値をテストするなら、メジャーリリースの番号との間での大小・等値比較のみを行うべきである。</para>
<indexterm>
<primary><literal>__GLASGOW_HASKELL__</literal></primary>
</indexterm>
</listitem>
</varlistentry>
</variablelist>
<para>あなたの手元のGHCのバージョン番号は、<literal>ghc</literal>を<literal>--version</literal>フラグ(<xref linkend="options-help"/>を見よ)つきで起動することで知ることができる。</para>
</sect1>
&relnotes1;
&relnotes2;
&relnotes3;
</chapter>
<!-- Emacs stuff:
;;; Local Variables: ***
;;; sgml-parent-document: ("users_guide.xml" "book" "chapter") ***
;;; End: ***
-->