def write_taken
bendvy-ecs-core@0.1.0.4 · machine.bend:104
import bendvy-ecs-core@0.1.0.4/machine.bend as Machine
import Base
import bendvy-ecs-core@0.1.0.4/deferred_command.bend as Deferred
import bendvy-ecs-core@0.1.0.4/trace_facts.bend as TraceFacts
import transaction.bend as Tx
104
105
106def write_taken(~S: Data,~M: Data,~V: Data,~W: Type,~E: Data,
107 ~put: W -> Slot<S,M,V> -> W,
108 pair: W & Slot<S,M,V>,undo: List<&1,(W -> W)>,commands:List<&1,Deferred.Command<W>>,events: List<&2,E>,trace:TraceFacts.State,value: V,skipSame: Bool) -> Tx.Tx<W,E>:
109 match pair:
110 case (world,+old):
111 Tx.Tx{put(world,queue(~S,~M,~V,old,value,skipSame)),(world => put(world,old)) <> undo,commands,events,trace}