X-Git-Url: https://git.martlubbers.net/?a=blobdiff_plain;ds=sidebyside;f=mTaskInterpret.icl;h=164db5e60ab64688df2e2ddf1136ae959d3a7511;hb=3fe035b92e9bc0b745c57db64e78461b2f36b6d1;hp=2d2005a6cdff2e8de78faf5fce3ff46d18a2736a;hpb=e19299be4b02b01fdf187418f15ddcdead25fd5a;p=mTask.git diff --git a/mTaskInterpret.icl b/mTaskInterpret.icl index 2d2005a..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,15 +373,15 @@ 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 $ bc) zero -//Start = fst $ toReadableByteCode (unMain $ blink LED1) zero -//Start = let (bcs, st) = toReadableByteCode (unMain bc) zero -// in (bcs, st.sdss) +//Start = [fst $ toReadableByteCode (unMain $ p0) zero +// ,'Text'.concat $ compile p0 +// ] +Start = toReadableByteCode (unMain $ p0) zero where -// bc = {main = ledOn (lit LED1)} -// bc = sds \x=5 In -// sds \y=4 In -// {main = If (y ==. lit 0) (pub x) (x =. x *. y :. y =. y -. lit 1)} + 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) ( digitalWrite D0 (lit True) )