instance sds ByteCode where
sds f = {main = BC $ freshs
>>= \sds->pure (f (tell` [BCSdsFetch sds]))
- >>= \(v In bdy)->modify (addSDS sds (toByteCode v)) >>| unBC (unMain bdy)}
+ >>= \(v In bdy)->modify (addSDS sds v) >>| unBC (unMain bdy)}
+// >>= \(v In bdy)->modify (addSDS sds (toByteCode v)) >>| unBC (unMain bdy)}
where
- addSDS i v s = {s & sdss=[{sdsi=i,sdspub=False,sdsval=v}:s.sdss]}
+ addSDS i v s = {s & sdss=[{sdsi=i,sdspub=False,sdsval=(dynamic v),sdsbc=toByteCode v}:s.sdss]}
con f = undef
pub (BC x) = BC $ censor (\[BCSdsFetch s]->[BCSdsPublish s])
toMessages :: MTaskInterval (String, BCState) -> ([MTaskMSGSend], BCState)
toMessages interval (bytes, st=:{sdss}) = (
- [MTSds s.sdsi (toByteCode s.sdsval)\\s<-sdss] ++
+ [MTSds s.sdsi s.sdsbc\\s<-sdss] ++
[MTTask interval bytes], st)
toSDSUpdate :: Int Int -> [MTaskMSGSend]