separate share publishing from share class
[mTask.git] / mTask.dcl
index 9b82478..955b28a 100644 (file)
--- a/mTask.dcl
+++ b/mTask.dcl
@@ -14,10 +14,6 @@ todo:
        imporove setp: >>*.
 */
 
-import GenPrint
-import Generics.gCons
-import Generics.gdynamic
-
 //import iTasks
 //
 //import iTasks._Framework.Generic
@@ -26,6 +22,7 @@ import StdClass
 import GenEq, StdMisc, StdArray
 
 import mTaskCode, mTaskSimulation, mTaskInterpret
+//import mTaskCode, mTaskInterpret
 import mTaskSerial, mTaskLCD
 
 // =================== mTask ===================
@@ -66,7 +63,7 @@ instance == MTask
 unMain :: (Main x) -> x
 
 class arith v where
-  lit :: t -> v t Expr | toCode t & toByteCode t
+  lit :: t -> v t Expr | toCode t & mTaskType t
   (+.) infixl 6 :: (v t p) (v t q) -> v t Expr | type, +, zero t & isExpr p & isExpr q //& toExpr2 p & toExpr2 q
   (-.) infixl 6 :: (v t p) (v t q) -> v t Expr | type, -, zero t & isExpr p & isExpr q //& toExpr2 p & toExpr2 q
   (*.) infixl 7 :: (v t p) (v t q) -> v t Expr | type, *, zero, one t & isExpr p & isExpr q //& toExpr2 p & toExpr2 q
@@ -93,10 +90,13 @@ class var2 v where
 class sds v where
   sds :: ((v t Upd)->In t (Main (v c s))) -> (Main (v c s)) | type, mTaskType, toCode t
   con :: ((v t Expr)  ->In t (Main (v c s))) -> (Main (v c s)) | type t
+class sdspub v where
   pub :: (v t Upd) -> v t Expr | type t
 class seq v where
   (>>=.) infixr 0 :: (v t p) ((v t Expr) -> (v u q)) -> (v u Stmt) | type t & type u
   (:.) infixr 0 :: (v t p) (v u q) -> v u Stmt | type t & type u
+class retrn v where
+  retrn :: v () Expr
 class step` v where
     (>>*.) infixl 1 :: (v t p) ((v t Expr) -> [Step v u]) -> v u Stmt | type t & type u
 :: Step v t = E.p.q: Cond (v Bool q) (v t p) | E.p: Ever (v t p)
@@ -214,9 +214,6 @@ instance long Eval Long
 
 // ----- tools ----- //
 
-derive gPrint Pin, Button, UserLED, AnalogPin, DigitalPin, PinMode
-derive class gCons Pin, Button, UserLED, AnalogPin, DigitalPin, PinMode
-
 instance == DigitalPin
 instance == AnalogPin
 instance == UserLED