型宣言では、 の左側のトークン=は型の名前です。=定義コンストラクターの右側の値- その型のインスタンスを作成する関数。
失敗の可能性を表す単純な型である Maybe の定義を考えてみましょう (nullまたはnil多くの言語で表されます)。
data Maybe a = Just a | Nothing
これは、 と の 2 つのコンストラクタを持つ型JustですNothing。
Justコンストラクターは成功を表します。ラップする値を表す任意の型の引数が必要です
- コンストラクターは
Nothing引数を取りません。失敗を表します。
Maybeコンストラクタが 2 つあるため、Maybe値を構築する方法が 2 つあります。このような型は共用体型と呼ばれます。パターン マッチングを使用して共用体型から値を抽出します。パターン マッチングを可能にする言語構造がいくつかあります ( letandバインディングwhere、caseステートメント、および関数変数バインディング)。以下ではJust、関数への引数の値を分解します。
fromJust :: Maybe a -> a
fromJust (Just x) = x
これが GHCI にロードされていると仮定します。ここではMaybe、コンストラクターを使用してのインスタンスを作成し、Justその値を再度取得します。
> let x = Just 20
> fromJust x
20
パターン マッチングで型がどのように検索されるかを次に示します。定義Storeしたコンストラクターを使用して型のインスタンスを作成します。Map
> let m = Map "someVar" $ IntVal 0
Variable以下では、Map から値を抽出する関数を定義します。
getVariable :: Store -> Variable
getVariable (Map v _) = v
関数の適用:
> getVariable m
"someVar"
うまくいけば、あなたが学んでいるリソースがこのことをすぐにカバーするでしょう. そうでない場合は、 Real World Haskellをお勧めします。