だから、私はこれを変えることができるカスタム計算式を構築したいと思います -
testWorld |>
subscribe ClickTestButtonAddress [] addBoxes |>
addScreen testScreen TestScreenAddress |>
setP (Some TestScreenAddress) World.optActiveScreenAddress |>
addGroup testGroup TestGroupAddress |>
addEntityGuiLabel (testLabelGuiEntity, testLabelGui, testLabel) TestLabelAddress |>
addEntityGuiButton (testButtonGuiEntity, testButtonGui, testButton) TestButtonAddress |>
addEntityActorBlock (testFloorActorEntity, testFloorActor, testFloor) TestFloorAddress |>
(let hintRenderingPackageUse = HintRenderingPackageUse { FileName = "AssetGraph.xml"; PackageName = "Misc"; HRPU = () }
fun world -> { world with RenderMessages = hintRenderingPackageUse :: world.RenderMessages }) |>
(let hintAudioPackageUse = HintAudioPackageUse { FileName = "AssetGraph.xml"; PackageName = "Misc"; HAPU = () }
fun world -> { world with AudioMessages = hintAudioPackageUse :: world.AudioMessages })
このようなものに -
fwd {
do! subscribe ClickTestButtonAddress [] addBoxes
do! addScreen testScreen TestScreenAddress
do! setP (Some TestScreenAddress) World.optActiveScreenAddress
do! addGroup testGroup TestGroupAddress
do! addEntityGuiLabel (testLabelGuiEntity, testLabelGui, testLabel) TestLabelAddress
do! addEntityGuiButton (testButtonGuiEntity, testButtonGui, testButton) TestButtonAddress
do! addEntityActorBlock (testFloorActorEntity, testFloorActor, testFloor) TestFloorAddress
let hintRenderingPackageUse = HintRenderingPackageUse { FileName = "AssetGraph.xml"; PackageName = "Misc"; HRPU = () }
do! fun world -> { world with RenderMessages = hintRenderingPackageUse :: world.RenderMessages }
let hintAudioPackageUse = HintAudioPackageUse { FileName = "AssetGraph.xml"; PackageName = "Misc"; HAPU = () }
do! fun world -> { world with AudioMessages = hintAudioPackageUse :: world.AudioMessages }}
<| runFwd testWorld
これは可能ですか、それとも可能に近いですか?もしそうなら、どのようなアプローチを取ることができますか?これはモナドですか、それともそれ以下ですか?