このブログは、旧・はてなダイアリー「檜山正幸のキマイラ飼育記 メモ編」(http://d.hatena.ne.jp/m-hiyama-memo/)のデータを移行・保存したものであり、今後(2019年1月以降)更新の予定はありません。

今後の更新は、新しいブログ http://m-hiyama-memo.hatenablog.com/ で行います。

シグニチャとそのパターンマッチ

「文字列(名前)の集合と非負整数値」の組をシグニチャと呼ぶ。次の形で書く; {"foo", "bar"; 2}, {; 3}, {"baz"; 0}, {;0}。

シグニチャパターンはオプションシグニチャパターンと引数シグニチャパターンの組である。オプションシグニチャパターンは:

  • 文字列 または 文字列? の有限集合

{"foo"?, "bar", "baz"?} はオプションシグニチャパターンで、次の要素からなる集合を表す。

  1. {"foo", "bar", "baz"}
  2. {"foo", "bar"}
  3. {"bar", "baz"}
  4. {"bar"}

引数パターンは:

  1. ハイフン、疑問符、アスタリスクからなる文字列
  2. 一度疑問符が出ると、疑問符かアスタリスク
  3. アスタリスクが出るとオシマイ。

例:"--??*", "?*", "-?", "---", "*"。1個の引数パターンは、ハイフンだけの文字列の集合を表す。"--??" なら、{"--", "---", "----"} である。無限集合もありえる。ハイフン文字列の長さは非負整数の集合を作る。

シグニチャパターンは、文字列有限集合の有限集合Optと非負整数値(無限かも知れない)集合Arityを定める。与えられたシグニチャの文字列集合の部分がOptに入り、整数値がArityに入れば、そのシグニチャはそのパターンにマッチする。