型宣言では、 の左側のトークン=
は型の名前です。=
定義コンストラクターの右側の値- その型のインスタンスを作成する関数。
失敗の可能性を表す単純な型である Maybe の定義を考えてみましょう (null
またはnil
多くの言語で表されます)。
data Maybe a = Just a | Nothing
これは、 と の 2 つのコンストラクタを持つ型Just
ですNothing
。
Just
コンストラクターは成功を表します。ラップする値を表す任意の型の引数が必要です
- コンストラクターは
Nothing
引数を取りません。失敗を表します。
Maybe
コンストラクタが 2 つあるため、Maybe
値を構築する方法が 2 つあります。このような型は共用体型と呼ばれます。パターン マッチングを使用して共用体型から値を抽出します。パターン マッチングを可能にする言語構造がいくつかあります ( let
andバインディング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をお勧めします。