Итак, я хочу, чтобы построить выражение вычисления пользовательского, который позволил бы мне превратить это -Как преобразовать выражение прямой трубы в выражение вычисления?
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
возможно, или близко к чему это возможно? Если да, то какой подход можно было бы предпринять? Это монада или что-то меньшее?
Просто интересно, что было бы полезно использовать выражения вычислений? (примечание конвейерной обработки выглядит хорошо для меня ...) –
Проще говоря, возможность устанавливать контрольные точки для каждой отдельной операции. Трубопровод один практически невосприимчив, AFAICT. По правде говоря, мое предпочтение было бы для VS, чтобы включить точку останова внутри конвейера, но я этого не вижу.Помимо всего этого, я хочу, возможно, добавить некоторые пользовательские операторы CE. В конечном итоге я пытаюсь создать небольшое выражение выражения для сценариев на уровне типа World. –
Конечно, в моем комментарии предполагается, что есть какой-то способ вывести текущий мир из отладчика ... Может быть, не было бы :(... Может, мне стоит вернуться к нормальному стандарту let-based? –