From 60eb7a628c6767fe7aa0095baa235d5dd54fc7da 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: Mon, 1 Sep 2025 17:17:45 +0900 Subject: [PATCH] [obsidian] vault backup: 2025-09-01 17:17:45[ --- content/otopoiesis.md | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/content/otopoiesis.md b/content/otopoiesis.md index 0c550991..c173b006 100644 --- a/content/otopoiesis.md +++ b/content/otopoiesis.md @@ -186,18 +186,25 @@ fn track_regions(regions:[{start:float,dur:float,generator:()->float}]){ let content = `{ phasor(Param!("freq",20,20000)) } -fn Track(name:string, content:()->`float)-> ()->`float{ - || `{ $content |> probe_to_track!(name) } +fn Track(name:string, content:()->`float)->`float{ + `{ + //stack is cleared and new track ui is placed on top of the stack + $content |> probe_to_track!(name) + } } -fn master(tracks:[()->`float])->()->`float{ - Track!("master", ||`{ map(tracks,|t| t!() ) |> sum }) +fn master(tracks:[`float])->`float{ + Track!("master", `{ lift_array(map(tracks,|t| $t ) ) |> sum }) } let dsp = master([t1,t2,t3...]) ``` -Trackの中でSliderとかが呼び出されると、そのスライダーはトラック内のパラメーターに属していて欲しいが、引数から順番に評価されるので、UI系の関数は全てサンク(レベル0)を受けて遅延評価するようなものでないとNG +Trackの中でSliderとかが呼び出されると、そのスライダーはトラック内のパラメーターに属していて欲しいが、引数は内側から評価されてしまう=sliderの評価の方が先に来てしまう + +UIツリー系の評価は、常にStackに積むような処理にしておいて、TrackのところではStackを消費し新たなUIをスタックに積むようにする、そして最後にトップレベルでスタックを全て消費しUIを構築、みたいな感じかな、これならサンクで包む必要もなし? + +UI系の関数は全てサンク(レベル0)を受けて遅延評価するようなものでないとNG ### 他