MOLDは、可視化されたデータ構造への直接操作から、データ構造を更新するメソッドを合成するシステムです。 複数の実演からオブジェクトの生成と代入の雛形を作り、値や参照を求める部分をescher-tsで合成します。
- エディタにクラスと、実演するメソッドの呼び出しを書きます。
- 呼び出しの括弧にマウスを合わせ、set testをクリックします。
- 開いたウィンドウのEditからノードや辺を操作し、呼び出し後の状態を示してacceptをクリックします。
- 同じメソッドの各呼び出しで実演を作り、Synthesizeをクリックします。
合成したメソッドは、実演との一致を検証してからエディタに反映します。 実演していない入力での正しさを保証するものではありません。
Node.js 22、pnpm 10.30.1、Rust、Python 3を使用します。 リポジトリのルートで次を実行してください。
rustup target add wasm32-unknown-unknown
cargo install wasm-bindgen-cli --version 0.2.114 --locked
pnpm --dir external/escher-ts install --frozen-lockfile
pnpm --dir external/escher-ts build
node web/scripts/build-wasm.mjs
npm --prefix Kanon install
REFSYN_DIR="$PWD" npm --prefix Kanon run build-refsyn-runtime
REFSYN_DIR="$PWD" npm --prefix Kanon run verify-refsyn-browser
npm --prefix Kanon run build-pages
python3 -m http.server 8000 --directory Kanon/distビルド後、http://localhost:8000/を開いてください。
wasm-bindgen-cliのバージョンは、Cargo.lock内のwasm-bindgenと合わせてください。
上のビルドを終えてから、リポジトリのルートで次を実行してください。 各テストの対象はテスト一覧を参照してください。
cargo fmt --check
cargo clippy --all-targets --all-features -- -D warnings
cargo test --locked
node --test runtime/*.test.mjs
npm --prefix web ci
npm --prefix web test
pnpm --dir external/escher-ts test:run
npm install --ignore-scripts --prefix Kanon/external/escodegen
(cd Kanon && npx jest --testPathIgnorePatterns external testize-argument-overlay)評価条件、入力、結果と再現手順は評価資料を参照してください。
グラフの表示と編集にはKanon、式の合成にはyudaitnb/escher-tsを基にした実装を使用しています。 同梱ソフトウェアの出典とライセンスは第三者ソフトウェアの表示を参照してください。