*/
//import iTasks
-import iTasks._Framework.Generic
-from iTasks._Framework.Task import :: Task
+//
+//import iTasks._Framework.Generic
+//from iTasks._Framework.Task import :: Task
import StdClass
-from iTasks.API.Core.Types import :: Display
-import gdynamic, gCons, GenEq, StdMisc, StdArray
+import GenEq, StdMisc, StdArray
import mTaskCode, mTaskSimulation, mTaskInterpret
+//import mTaskCode, mTaskInterpret
import mTaskSerial, mTaskLCD
// =================== mTask ===================
:: DigitalPin
= D0 | D1 | D2 | D3 | D4 | D5 |D6 | D7 | D8 | D9 | D10 | D11 | D12 | D13
:: AnalogPin = A0 | A1 | A2 | A3 | A4 | A5
+:: UserLED = LED1 | LED2 | LED3
:: PinMode = INPUT | OUTPUT | INPUT_PULLUP
:: Pin = Digital DigitalPin | Analog AnalogPin
unMain :: (Main x) -> x
class arith v where
- lit :: t -> v t Expr | toCode 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
- (/.) 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
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, 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
(>>=.) 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 t p) -> (v t Stmt) | type t
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)
delay :: (v Long p) -> (v Long Expr)
millis :: (v Long Expr)
+class userLed v where
+ 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
instance pio AnalogPin Bool
instance type2string MTask
instance type2string DigitalPin
instance type2string AnalogPin
+instance type2string UserLED
instance type2string String
instance type2string ()
class varName a :: a -> String
// ----- tools ----- //
-derive consName DigitalPin, AnalogPin, PinMode
-
instance == DigitalPin
instance == AnalogPin
-
-derive consIndex DigitalPin, AnalogPin
+instance == UserLED
tab =: toString (repeatn tabSize ' ')
tabSize :== 2