Parsec 入門


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

ややこしい := データコンストラクタだが、次の記事のための伏線だ。