プログラミング Haskell 第 2 版

プログラミング Haskell 第 2 版

#html{{

table border="0" cellpadding="5"><tr><td valign="top"><a href="https://www.amazon.co.jp/exec/obidos/ASIN/4908686076/vertex9-22/" target="_blank"><img src="https://images-fe.ssl-images-amazon.com/images/I/41Korrd80qL._SL160_.jpg" border="0"></a></td><td> </td><td valign="top"><a href="https://www.amazon.co.jp/exec/obidos/ASIN/4908686076/vertex9-22/" target="_blank">プログラミングHaskell 第2版</a><br>Grahum Hutton<br>ラムダノート<br>2019-08-02<br>¥ 3,456</td></tr></table>
}}

第8章 型と型クラスの定義

p.93

この章では、Haskell で新しい型と型クラスを宣言する方法を説明します。
型を宣言する方法を三つ示した後、再帰型について考察してから、型クラスとそのインスタンスを宣言する方法を解説します。
最後に本章の締めくくりとして、恒真式を検査する関数と抽象機械を開発します。

8.1 typeによる型宣言

新しい型を宣言するいちばん簡単な方法は、既存の型に別名を付けることです。
これには Haskell の typeを使います。
たとえば、プレリュードにある以下の宣言は、String型が文字のリスト [Char]の別名でしかないことを表しています。

#code(haskell){{
type String = [Char]
}}


p.94

8.2 dataによる型宣言

既存の型に別名を付けるのではなく、完全に新しい型を宣言するには、Haskell のdataを使って型の値を指定します。
たとえば、プレリュードにある以下の宣言は、Bool型が Falseと Trueという二つの値から構成されることを表します。

#code(haskell){{
data Bool = False | True
}}
このような型宣言で使う記号「|」は「または」と読み、型の値は構成子と呼びます。
新しく型を定義する場合と同様に、新しく定義する構成子は先頭を大文字にしなければいけません。
さらに、同じ名前の構成子を複数の型で用いることはできません。

構成子

p.95

GHCi で試す場合には、新しい型の値を GHC が表示できるように、data宣言の最後に deriving Showを追加する必要があります。

引数を取ることから、構成子は関数だといえます。

普通の関数と構成子関数との違いは、後者は定義に等式を持たず、純粋にデータを作るために存在していることです。


トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2019-08-29 (木) 01:27:01