From 983ab969d2c163beb8d09c4c93d4cc7ac612babe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=BE=E6=B5=A6=20=E7=9F=A5=E4=B9=9F=20Matsuura=20Tomoy?= =?UTF-8?q?a?= Date: Sat, 8 Nov 2025 11:12:18 -0500 Subject: [PATCH] [obsidian] vault backup: 2025-11-08 11:12:18[ --- content/Meshtastic.md | 8 +++ content/NYCResistor.md | 8 +++ content/Signal Rising.md | 8 +++ ...ィブプログラミングのによる信号処理のライブコーディング.md | 59 +++++++++++++++++++ 4 files changed, 83 insertions(+) create mode 100644 content/Meshtastic.md create mode 100644 content/NYCResistor.md create mode 100644 content/Signal Rising.md diff --git a/content/Meshtastic.md b/content/Meshtastic.md new file mode 100644 index 00000000..f9f93bd2 --- /dev/null +++ b/content/Meshtastic.md @@ -0,0 +1,8 @@ +--- +date: 2025-11-08 11:10 +--- +[Meshtastic](https://meshtastic.org/) + +[[LoRa]]でのメッシュネットワーク構築用のオープンなシステム + + diff --git a/content/NYCResistor.md b/content/NYCResistor.md new file mode 100644 index 00000000..efed315c --- /dev/null +++ b/content/NYCResistor.md @@ -0,0 +1,8 @@ +--- +date: 2025-11-08 11:11 +--- +#organization + +[NYC Resistor – We learn, share, and make things.](https://www.nycresistor.com/) + + diff --git a/content/Signal Rising.md b/content/Signal Rising.md new file mode 100644 index 00000000..e80b2f50 --- /dev/null +++ b/content/Signal Rising.md @@ -0,0 +1,8 @@ +--- +date: 2025-11-08 11:09 +--- +#organization + +[SIGNALS RISING](https://signalsrising.org/) + + diff --git a/content/多段階計算と増分関数型リアクティブプログラミングのによる信号処理のライブコーディング.md b/content/多段階計算と増分関数型リアクティブプログラミングのによる信号処理のライブコーディング.md index 2a1bc8e0..862bb2de 100644 --- a/content/多段階計算と増分関数型リアクティブプログラミングのによる信号処理のライブコーディング.md +++ b/content/多段階計算と増分関数型リアクティブプログラミングのによる信号処理のライブコーディング.md @@ -67,8 +67,67 @@ mimiumはコードを専用のVMバイトコードへコンパイルし実行す ### シンタックス +図nにmimiumの内部表現Lambda-mmmに多段階計算の体系を加えた新しい内部表現 $\lambda_{Mmmm}$(Multi-stage version of $\lambda_{mmm}$)のシンタックスを定義する。 + +$$ + +$$ + +### シンタックスシュガー + +mimiumでは、多段階計算の体系を直感的に扱えるように2つのシンタックスシュガーを導入している。 + +1つは、ステージ0でコード辺を返す関数`mymacro`を実行した結果をスプライスでステージ1に埋め込む操作、`$(mymacro(arg))`を、`mymacro!(arg)`と書けるようにするものである。 + +もう1つは、変数のスコープを維持したままだとスプライスとクオートの括弧がネストされてしまう問題を回避するために、グローバルスコープに限定し、#stage(macro)/#stage(main)と書くことで、スコープを維持したままその行以下は指定したステージになるというものである。 + +### 多段階計算によるメタ操作の実例 + +```rust +fn cascade(n,gen){ + let g = gen() + if (n>0){ + let c = cascade(n - 1.0 ,gen) + let multiplier = 1.0-(1.0/(n*2.0)) + |rate| { rate + g(rate/2.0)* 0.5 * rate * multiplier |> c } + }else{ + |rate| g(rate) + } +} +fn osc(){ + ... +} +let myosc = cascade(20, | | osc); +fn dsp(){ + let f = 200 + let r = f |> myosc + (r,r) +} +``` + +```rust +#stage(macro) +fn cascade(n,gen){ + if (n>0.0){ + let multiplier = 1.0-(1.0/(n*3)) |> lift_f + `{|rate| rate + ($gen)(rate/3)* 0.5 * rate* $multiplier + |> $cascade(n - 1.0 ,gen) } + }else{ + `{|rate| ($gen)(rate)} + } +} +#stage(main) +fn osc(){ + ... +} +fn dsp(){ + let f = 200 + let r = f |> cascade!(20,`osc) + (r,r) +} +``` ## コールツリーの解析 - クロージャ