rewrite generation to rws
[mTask.git] / mTask.dcl
index e8f62f2..9b82478 100644 (file)
--- a/mTask.dcl
+++ b/mTask.dcl
@@ -18,10 +18,10 @@ import GenPrint
 import Generics.gCons
 import Generics.gdynamic
 
-import iTasks
-
-import iTasks._Framework.Generic
-from iTasks._Framework.Task import :: Task
+//import iTasks
+//
+//import iTasks._Framework.Generic
+//from iTasks._Framework.Task import :: Task
 import StdClass
 import GenEq, StdMisc, StdArray
 
@@ -70,7 +70,7 @@ class arith v where
   (+.) 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
-  (/.) infixl 7 :: (v t p) (v t q) -> v t Expr | type, / t & isExpr p & isExpr q //& toExpr2 p & toExpr2 q
+  (/.) infixl 7 :: (v t p) (v t q) -> v t Expr | type, /, zero t & isExpr p & isExpr q //& toExpr2 p & toExpr2 q
 class boolExpr v where
   (&.) infixr 3 :: (v Bool p) (v Bool q) -> v Bool Expr | isExpr p & isExpr q //& toExpr2 p & toExpr2 q
   (|.) infixr 2 :: (v Bool p) (v Bool q) -> v Bool Expr | isExpr p & isExpr q //& toExpr2 p & toExpr2 q
@@ -91,7 +91,7 @@ class var2 v where
   var2 :: t ((v t Upd)->(Main (v c s))) -> (Main (v c s)) | type, toCode t
   con2 :: t ((v t Expr)  ->(Main (v c s))) -> (Main (v c s)) | type t
 class sds v where
-  sds :: ((v t Upd)->In t (Main (v c s))) -> (Main (v c s)) | type, toByteCode, toCode t
+  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
   pub :: (v t Upd) -> v t Expr | type t
 class seq v where
@@ -133,8 +133,8 @@ class time v where
   millis ::         (v Long Expr)
 
 class userLed v where
-       ledOn :: UserLED -> (v () Stmt)
-       ledOff :: UserLED -> (v () Stmt)
+  ledOn :: (v UserLED q) -> (v () Stmt)
+  ledOff :: (v UserLED q) -> (v () Stmt)
 
 class pio p t where pio :: p -> v t Upd | aIO v & dIO v
 instance pio AnalogPin Int
@@ -155,6 +155,7 @@ instance type2string Char
 instance type2string MTask
 instance type2string DigitalPin
 instance type2string AnalogPin
+instance type2string UserLED
 instance type2string String
 instance type2string ()
 class varName a :: a -> String
@@ -218,6 +219,7 @@ derive class gCons Pin, Button, UserLED, AnalogPin, DigitalPin, PinMode
 
 instance == DigitalPin
 instance == AnalogPin
+instance == UserLED
 
 tab =: toString (repeatn tabSize ' ')
 tabSize :== 2