最小のコンピュテーション式
メモ。
使う規則
T(e;, V, C, q) = C(e;b.Zero())
この規則がvalidなコンピュテーション式を作れるはず。
Zero
メソッドのみを用意すれば良いのでBuilderの実装も最小限なはず?*1
コード
// 定義 type A() = member x.Zero()=() let a = A() // 実際に試す a { () }
F# 4.0のfsiで確認。
- ビルダーのクラス名に制限はない
- 束縛名にも制限はない
なので一文字でも問題なく判別可能です。
公開後の追記
最小のコンピュテーション式
— ぜくる (@zecl) 2016年10月24日
type A() = member https://t.co/aX9g8Fu0HT()=x
コレ説(´・_・`)
単にビルダーインスタンスを返すだけなのでこっちが正しいですね。
自分でx
にしておきながら気付いてなかったです…失礼しました。
zeclさん、指摘ありがとうございました。
番外編
バッククオート2つで囲めばIdentifierにできるので、(たぶん)絵文字も可能です。
type ``🍣``() = member x.Zero()=() let ``🍣`` = ``🍣``() ``🍣`` { () }
表示されない場合は環境の問題でしょう。
*1:と思っていたらミスしてました。追記部分を読んでください