named sds's
[mTask.git] / mTaskInterpret.icl
index 3f82f97..164db5e 100644 (file)
@@ -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)