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

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

Mofl(モフる)

Moflの背景圏

Moflの背景圏はMofCatとする。MofCatはPtSet上の具象圏。PtSetnonsの部分圏とみなす。ただし、PtSetnons全体は必要なくて、PtSetnons≦ω内で議論する。

  • MofCatは、デカルト半環圏である。×, 1, + 0, <, >, [, ]
  • MofCatは、クリーネスターを備えている。
集合論圏論 Mofl
× ×, Prod
1 Void, void
+ +, Sum
0 Never
<, > <, >
N Nat
B Bool
X* List(X)

複合データ型:

集合論圏論 Mofl
C Char
S = C* String = List(Char)
L = T* TList = List(Tree)
T = S + S×L Tree = String + String・List

型定義は、

  • type S := μ(S){ε + C×S}
  • type L, T := μ(L, T){T*, S + S×L}

リストに関する基本関数:

  • is-list
  • cons, ::
  • top
  • rest
  • パターン a::x
  • is-empty []

ペアに関する基本関数:

  • is-pair
  • fst
  • snd
  • パターン (a, b)

ツリーに関する基本関数:

  • is-tree
  • root
  • children
  • パターン a・c
  • is-string

他に関数:

  • bangX:X→Void

制御構造/定義:

  • a~ 定数から作った関数
  • ;, \circ
  • <, >
  • if P then F else G end
  • error, forever
  • find x in D by ν st P end
  • define
  • recdef

便利な機能:

  • let in end
  • say where end
  • case of
  • matches パターン (a, b), (a, b, c), a::t, a・c, n+1

sayの意味は、「…とすれば」「例えば」「まー、ねぇ、おい、ちょっと」「まったく」など。「ええと」くらいな感じで解釈する。letrecとwhere - 檜山正幸のキマイラ飼育記では its where ってのを出しているな。itsかぁー? sayより無難かも。

型判定関数:

  • is-void
  • is-char
  • is-string
  • is-nat
  • is-bool
  • is-tlist
  • is-tree

ベース判定関数:

  • is-zero
  • is-empty, s-is-empty, l-is-empty
  • is-string, t-is-string

後付のコジツケだけど、