2023-02-16から1日間の記事一覧

型クラスとかちょっと一般論

まず、Leanコミュニティでも用語の個人差がある。object, term, value, element なんかは要注意。型クラスのパラメータは、相対指標の部分指標の指定なので、ファイバー付き圏のベース圏を指定する。C が1パラメータの型クラスとして、固定したξに対して (C …

Leanのモナド たぶん続きがある

クラスBindは、">>=" または bind を持っている構造のクラス。 クラスPureは、pure を持っている構造のクラス。 クラスFunctorは、map を持っている構造のクラス。mapしてから適用するのを <$> で表す?? 型クラスのベース〈パラメータ〉は型関数=総称型だ…

TypeScriptコンストラクタの便利速記構文

Constructor Assignment と呼ぶようだ。いつもの決まりきった書き方を短く書ける。 interface Container { context : Bunch; outcome : Wire | null; } class Stage implements Container { constructor(public context : Bunch, public outcome: Wire | nul…

main関数

戻り値にステータスを返したいなら IO UInt32 とする。戻り値不要なら Unit でもよい。 def main(args : List String) : IO Unit := do let len := List.length args IO.println s!"length of args is {len}" for i in [0:len] do IO.println (List.get! arg…

テンプレート文字列

s!を前置するとテンプレート文字列になる。他にもナントカビックリがあるのか? s!"Hello, {hello}!"改行は普通に入れられる。エスケープの必要はない。

SVGのビューボックスと表示エリア

SVGの寸法単位(ピクセルやインチ)は意味がない、だってスケーラブルだから。SVG図形が描画される空間は仮想的・理想的な $`{\bf R}^2`$ だと思っていいので、寸法はすべて無次元数で書く。仮想キャンバスから表示に切り出す部分を viewBox で指定。ビュー…

Lean4のモナド系統図

Listはなぜかモナドから外されて単なる関手扱い。 白が“クラス”で青が“インスタンス”ということだろう。 矢印はクラス間の extends と、インスタンス-クラス間の member-of モナドの末尾は M というネーミングルールだが、守られてはいない。 Pure と Bind …

main関数

戻り値にステータスを返したいなら IO UInt32 とする。戻り値不要なら Unit でもよい。 def main(args : List String) : IO Unit := do let len := List.length args IO.println s!"length of args is {len}" for i in [0:len] do IO.println (List.get! arg…

テンプレート文字列

s!を前置するとテンプレート文字列になる。他にもナントカビックリがあるのか? s!"Hello, {hello}!"改行は普通に入れられる。エスケープの必要はない。