X-Git-Url: https://git.martlubbers.net/?a=blobdiff_plain;f=mTaskInterpret.icl;h=164db5e60ab64688df2e2ddf1136ae959d3a7511;hb=6d956995e169ae8fd44d62e26e35d499a9660225;hp=3f82f970d43c15fbb725f8501d9c7990251b8ec0;hpb=ccf50ec9be06bc1b418b25225ca76d6e6ce743ac;p=mTask.git diff --git a/mTaskInterpret.icl b/mTaskInterpret.icl index 3f82f97..164db5e 100644 --- a/mTaskInterpret.icl +++ b/mTaskInterpret.icl @@ -265,15 +265,23 @@ unBC (BC x) = x instance sds ByteCode where sds f = {main = BC $ freshs - >>= \sdsi->pure {BCShare | sdsi=sdsi,sdsval=BCValue 0} - >>= \sds->pure (f (tell` [BCSdsFetch sds])) - >>= \(v In bdy)->modify (addSDS sds v) - >>| unBC (unMain bdy)} - where - addSDS sds v s = {s & sdss=[{sds & sdsval=BCValue v}:s.sdss]} - + >>= \sdsi->pure {BCShare | sdsname="", sdsi=sdsi, sdsval=BCValue 0} + >>= \sds ->pure (f $ tell` [BCSdsFetch sds]) + >>= \(v In bdy)->modify (addSDS sds v) + >>| unBC (unMain bdy)} + where + addSDS sds v s = {s & sdss=[{sds & sdsval=BCValue v}:s.sdss]} con f = undef +instance namedsds ByteCode where + namedsds f = {main = BC $ freshs + >>= \sdsi->pure {BCShare | sdsname="", sdsi=sdsi, sdsval=BCValue 0} + >>= \sds ->pure (f $ tell` [BCSdsFetch sds]) + >>= \(v Named n In bdy)->modify (addSDS sds n v) + >>| unBC (unMain bdy)} + where + addSDS sds n v s = {s & sdss=[{sds & sdsname=n, sdsval=BCValue v}:s.sdss]} + instance sdspub ByteCode where pub (BC x) = BC $ censor (\[BCSdsFetch s]->[BCSdsPublish s]) x @@ -365,12 +373,14 @@ toMessages interval x s instance == BCShare where (==) a b = a.sdsi == b.sdsi //Start = toMessages (OnInterval 500) $ toRealByteCode (unMain bc) zero -Start = [fst $ toReadableByteCode (unMain $ p0) zero - ,'Text'.concat $ compile p0 - ] +//Start = [fst $ toReadableByteCode (unMain $ p0) zero +// ,'Text'.concat $ compile p0 +// ] +Start = toReadableByteCode (unMain $ p0) zero where - p0 :: (Main (a Int Expr)) | assign a & arith a & sds a - p0 = sds \x = 6 In {main = x =. x *. lit 7} + p0 :: (Main (a Int Expr)) | assign, namedsds, sds, arith a +// p0 = sds \x = 6 In {main = x =. x *. lit 7} + p0 = namedsds \x = 6 Named "x" In {main = x =. x *. lit 7} bc = {main = IF (analogRead A0 >. lit 50)