2022-04-01から1ヶ月間の記事一覧

同義語 あとで直す

置換〈substitution〉 展開〈expansion〉 穴埋め〈fill-in〉 ズームイン〈zoom-in〉 分析〈analyze〉 逆は 縮約 折りたたみ ズームアウト ブラックボックス化

Graphvizのノード順番制御

ordering=out でほぼ思い通りの結果になる。 digraph { node [ordering=out]; /* ... */ }

メタストリング図

以下、https://arxiv.org/pdf/0706.1033.pdf (「コック達論文」として言及)のズーム複体を見ていて、思ったこと; ゲンツェンのNK証明図とLK証明図の関係がストリング図とメタストリング図の関係として説明できるだろう、ということ。まず、コック達論文用…

トークンで悩んでいる

アンダースコアとハイフンは名前文字にした。 が、ハイフン〈マイナス〉は名前開始文字ではない。 アンダースコア一文字で名前になる。 ハイフン〈マイナス〉一文字はオペレーター〈Operator〉という型のトークンになる。 0-signature, 1-mor などは、番号付…

概念の変遷、よくあるパターン

元の概念(例:多様体) そこからはみ出した概念(例:境界を考える) 2つの排他的概念(例:境界無し、境界あり) 元の概念の再確認(例: 境界無し) 統合した概念(例:境界があってもなくてもよい) 実例 1: 多様体 境界付き多様体 多様体と境界付き多…

同義語・多義語の連想ゲーム

同義語、曖昧多義語が多いのを利用して、連想ゲームをする。「代入」の用法: 上書き割り当て〈overwrite assignment〉 手続き型プログラミング言語の代入文 束縛〈binding〉 関数型プログラミング言語の let, where など 置換〈substitution〉プレースホル…

型無し演算子指標とモデル

型無し演算子指標は untyped operator signature だが、untyped = single sorted 。また、演算子は代数的指標の演算〈operation〉。したがって、 op:(S, ..., S) → S と書ける。通常のプログラミング言語と同様に引数変数を使うと、 op: (a:S, ..., z:S) → …

リッチ述語、リッチバッグ、K集合

次の可換図式がある。$`\require{AMScd} \begin{CD} |{\bf FinSet}| @>{\mathrm{card}}>> {\bf N}\\ @AAA @AAA \\ |{\bf ThinSet}| @>{\mathrm{IsNonEmpty}}>> {\bf B} \end{CD}\\ \:\\ \text{commutative in }{\bf SET}`$やせた集合は空集合または単元集合…

スキーマ・アグリゲーションの例

型: String: 文字列、特にバリデーション〈検査〉しない。 MailAddr ⊆ String: バリデーションする。 ZipCode ⊆ String: バリデーションする。 旧スキーマ: ( givenName : String, familyName : String, mailAddr : MailAddr, userId: String, geoAddr : S…

順列の数と順序付き分割の数

集合 A の要素の順列の個数と、集合 A の分割〈パーティション〉に順番〈全順序〉を付けたモノの個数は同じ。だが、解釈が違う。以上の事実は、バンドルの移送方向(前送り〈押し出し〉か引き戻し)に関して基本的な見方を与える。同様に、組み合わせ的な議…

離散化・打ち切り随伴とバンドルの圏

n-圏の離散化持ち上げ〈discretization {lift | promotion | ascent}〉をδ、打ち切り引き下げ〈truncation {fall | demotion | descent}〉をτとすると。$`\quad {\bf SET}(A, \tau {\bf Set}) \cong \tau {\bf CAT}(\delta A, {\bf Set})\text{ in }{\bf SET…

集合族と写像族:書き方

書き方と印象。文字は変えない。 $`(f_i:A_i \to B_i)_{i\in I}`$ まー、写像の族だわな、うん。 $`(f[i]:A[i] \to B[i])_{i\in I}`$ スキーマ〈集合の配列〉 A とスキーマ〈集合の配列〉 B のあいだの値変換に見える。$`i\in \{1, 2, 3\}`$ とか。 $`(f_i:A…

ts-node ダメやん

ESModules を使ったソースで、ts-node hoge.mts すると、ts-node が次のエラーを出す。 SyntaxError: Cannot use import statement outside a moduleファイル名が .mts 拡張子なので、"type": "module" 要らないはずだが、package.json に次を入れてみた。 "…

バンドルの圏

Bun[B] -- 集合B上のバンドルの圏 f→ : Bun[B] → Bun[B'] -- 前送り関手 f← : Bun[B'] → Bun[B] -- 引き戻し関手 ∇f = f→ Δf = f← Σf と Πf Bun に引き戻し/逆方向ファイバー射の圏。反変バンドル射の圏 Bun に引き戻し/順方向ファイバー射の圏。共変バン…

シェブロテインのレコーディングフェーズとGAST

シェブロテインは、ユーザーのパーザークラスのコンストラクタ内での自己分析実行関数呼び出しにより、GAST〈Grammar AST | ガスト〉を作る。ガストを作るときに、パーザー関数を呼び出す。この作業工程をレコーディングフェーズと呼ぶ。レコーディングフェ…

シェブロテインの自己分析実行関数

peformSeflAnalysys はパーザーの引数なしメソッド this.peformSeflAnalysys() 以外に、 オブジェクトを引数に取るスタティックメソッド shev.Parser.peformSeflAnalysys(obj) もあるようだ。いずれにしても、ユーザー・パーザークラスのコンストラクタで呼…

シェブロテインのパーザー関数

パーザークラスの宣言から RULEメソッドのプロファイルを見る。 /** * A Parser that outputs a Concrete Syntax Tree. * See: * - https://chevrotain.io/docs/tutorial/step3_adding_actions_root.html#alternatives * - https://chevrotain.io/docs/guide…

アリーナ周り

縦方向が同義語。 番号 構造 下側 下側要素 縦線 縦線要素 1 アリーナ 位置集合 位置 方向集合 方向 2 林 根集合 根 低木 葉 3 コンテナ 形状集合 形状 位置集合 位置 4 型ファミリー インデックス集合 インデックス 型 インスタンス 5 バンドル ベース空間 …

importの書き方

node.jsのモジュールサーチは評判が悪いようだが、確かに、どこからモジュールを持ってくるのかは分かりにくい。次のようにしよう。 nodeのコアモジュールのときは、node: スキームをつける。import fs from 'node:fs/promises'; インストールしたNPMパッケ…

シェブロテインで使っている型

https://dev.to/nathant/how-i-built-my-own-simplified-react-with-chevrotain-typescript-webpack-3ja6 : const Let: chevrotain.ITokenConfig = createToken({ name: "Let", pattern: /let/, longer_alt: Identifier }); ↑型の指定が間違っている。戻り…

シェブロテインを使ったパーザー

Stardog で使っているパーザーのインターフェイス https://github.com/stardog-union/millan/blob/master/src/helpers/chevrotain/types.ts : import { IToken, IRecognitionException, CstNode, TokenType, IRecognizerContext, } from 'chevrotain'; expo…

シェブロテインのCST構造

CstElement export declare type CstElement = IToken | CstNode IToken /** * Things to note: * - The offset range is inclusive to exclusive. * * - A lineTerminator as the last character does not effect the Token's line numbering. * In other w…

気付いた小ワザ

スプレッド構文 [...a, ...b] で Array.prototype.concat(a, b) スプレッド構文 {...a, ...b} で Object.assign(a, b) クラスなしのオブジェクト定義 let C = { add(x, y){return x + y}}; 分割〈destructuring〉代入 let {a, b} = {a:1, b:2, c:3}; オブジ…

正規表現を分かりやすく書く

https://github.com/stardog-union/millan/blob/master/src/helpers/regex.ts を少し変更する。名前を置換した: and → seq many → repeat export const regex = { or(...r: RegExp[]) { return new RegExp(r.map(({ source }) => `(${source})`).join('|'))…

他の関数の引数型を取って使う

let foo : Parameters<typeof someFunc>[2]; typeof someFunc で関数 someFunc の関数型〈アロー型〉を取る。 Parameters で、関数型の引数型配列を作る。 Parameters[2] で、関数型の引数型配列の三番目の型を取る。 変数 foo の型は、関数 someFunc の第三引数の型になる。</typeof>

シェブロテインの学習

https://github.com/witheve/Eve/blob/master/src/parser/parser.ts import * as chev from "chevrotain"; var {Lexer, tokenMatcher} = chev; export var Token = chev.Token; /* .... */ // Comments export class CommentLine extends Token { static PAT…

シェブロテインの内部規則のダンプ

const productions: Record<string, Rule> = parser.getGAstProductions(); console.dir(productions); GAstが意味不明だが、Generated AST かな? ともかく、GAstProductions が内部的に構築されればバージングが出来る状態になる。</string,>

オートマトンなど、雑多

無名: 集合 要素 型 インスタンス 空間 点 関係 ? 写像 ? 写像の要素相当概念は、呼び出し/発動〈call | invocation | インボケーション〉と呼ぶことにする。関係のインスタンスは、RDFでは (a, b)∈R を (a, R, b) と書いてトリプルと呼ぶ。 関数の呼び出…

多義曖昧語:シェープ

「シェープ」の意味が曖昧 直感的な意味での形状。ツリーやバンブーなどのグラフと思ってよいので、形状グラフ。 形状グラフのラベル 形状グラフのポジション集合 形状グラフとボジション集合の組(構造) ラベルとボジション集合の組(構造) 当初は形状グ…

TypeScript山形括弧型アサーション

初見、意味不明だった。 export const Type = { ConditionalsExpression: <'conditionalsExpression'>'conditionalsExpression', DisjunctionExpression: <'disjunctionExpression'>'disjunctionExpression', ConjunctionExpression: <'conjunctionExpressio…