1 import Base 2 import ./change_tick.bend as Tick 3 import inspector_query.bend as Q 4 import inspector.bend as I 5 import check.bend as K 6 import world.bend as W 7 def inspect_handles_joined(~S:Data,~Store:Type,~R:Type,~E:Data,cursor:Maybe<&2,Tick.Tick>,observed:W.World & List<&2,W.Handle>) -> I.Frame & List<&2,W.Handle>: 8 (world,value)=observed 9 (I.Frame{world,cursor},value) 10 def inspect_handles(~S:Data,~Store:Type,~R:Type,~E:Data,frame:I.Frame) -> I.Frame & List<&2,W.Handle>: 11 match frame: 12 case I.Frame{world,cursor}:inspect_handles_joined(~S,~Store,~R,~E,cursor,W.handles(~S,~Store,~R,~E,world)) 13 def inspect_valid_joined(~S:Data,~Store:Type,~R:Type,~E:Data,cursor:Maybe<&2,Tick.Tick>,observed:W.World & Bool) -> I.Frame & Bool: 14 (world,value)=observed 15 (I.Frame{world,cursor},value) 16 def inspect_valid(~S:Data,~Store:Type,~R:Type,~E:Data,frame:I.Frame,target:W.Handle) -> I.Frame & Bool: 17 match frame: 18 case I.Frame{world,cursor}:inspect_valid_joined(~S,~Store,~R,~E,cursor,W.valid(~S,~Store,~R,~E,world,target)) 19 def inspect_world(~S:Data,~Store:Type,~R:Type,~E:Data) -> Q.WorldRead,S>: 20 Q.WorldRead{inspect_handles(~S,~Store,~R,~E),inspect_valid(~S,~Store,~R,~E)} 21 def check_handles_joined(~S:Data,~Store:Type,~R:Type,~E:Data,observed:W.World & List<&2,W.Handle>) -> K.Frame & List<&2,W.Handle>: 22 (world,value)=observed 23 (K.Frame{world},value) 24 def check_handles(~S:Data,~Store:Type,~R:Type,~E:Data,frame:K.Frame) -> K.Frame & List<&2,W.Handle>: 25 match frame: 26 case K.Frame{world}:check_handles_joined(~S,~Store,~R,~E,W.handles(~S,~Store,~R,~E,world)) 27 def check_valid_joined(~S:Data,~Store:Type,~R:Type,~E:Data,observed:W.World & Bool) -> K.Frame & Bool: 28 (world,value)=observed 29 (K.Frame{world},value) 30 def check_valid(~S:Data,~Store:Type,~R:Type,~E:Data,frame:K.Frame,target:W.Handle) -> K.Frame & Bool: 31 match frame: 32 case K.Frame{world}:check_valid_joined(~S,~Store,~R,~E,W.valid(~S,~Store,~R,~E,world,target)) 33 def check_world(~S:Data,~Store:Type,~R:Type,~E:Data) -> Q.WorldRead,S>: 34 Q.WorldRead{check_handles(~S,~Store,~R,~E),check_valid(~S,~Store,~R,~E)}