Parsec データコンストラクタ :=
:= はデータコンストラクタだ
データコンストラクタに := という演算子風の書き方をするものがある。演算子ではなくあくまでもデータコンストラクタだ。使い方は次のようになる。Prelude> data Example = String := Int deriving Show Prelude> "hello" := 7 "hello" := 7
:= が中置演算子のように見えるが、これはデータコンストラクタだ。次のように前置型にすれば分かりやすいかもしれない。
Prelude> (:=) "world" 6 "world" := 6
:= はあくまでもデータコンストラクタなので、"world" に 6 を束縛したりはできない。変数に束縛してもそれはフィールドに "world" と 6 を持つ Example 型のデータと言うことになる。
Prelude> a = "world" := 6 Prelude> a "world" := 6 Prelude> :t a a :: Example
value 関数
したがって、データ a から 6 を取り出すためには次のような value 関数を使ってパターン認識で取り出す必要がある。
Prelude> value (_ := x) = x Prelude> value a 6
ややこしい := データコンストラクタだが、次の記事のための伏線だ。