Mofl(モフる)
Moflの背景圏
Moflの背景圏はMofCatとする。MofCatはPtSet上の具象圏。PtSetnonsの部分圏とみなす。ただし、PtSetnons全体は必要なくて、PtSetnons≦ω内で議論する。
集合論/圏論 | 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~ 定数から作った関数
- ;,
- <, >
- 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
後付のコジツケだけど、
- Minimum and Optimistic Functional Language →変更した Moflのキーワード - 檜山正幸のキマイラ飼育記 メモ編