-instance Semigroup (ByteCode a p) where
- mappend m n = BC \s->let (b1, (b2, t)) = runBC m <$> runBC m s in (b1 ++ b2, t)
-
-instance Monoid (ByteCode a p) where
- mempty = retrn []
-
-(<++>) infixl 2 :: (ByteCode a p) (ByteCode b q) -> ByteCode c r
-(<++>) m n = BC \s->let (b1, (b2, t)) = runBC n <$> runBC m s in (b1 ++ b2, t)
-
-(<+->) infixr 1
-(<+->) m n :== m <++> retrn n
-
-runBC (BC m) = m
-
-retrn :: ([BC] -> ByteCode a p)
-retrn = BC o tuple
-fmp :: ([BC] -> [BC]) (ByteCode a p) -> ByteCode a q
-fmp f b = BC \s->let (bc, s`) = runBC b s in (f bc, s`)
+//(>>) infixl 2 :: (ByteCode a p) (ByteCode b q) -> ByteCode b q
+//(>>) m n = BC \s->(let (_, s1) = runBC m s in
+// let (a, s2) = runBC n s1
+// in (a, {s2 & bytecode=(s2.BCState.bytecode ++ s1.BCState.bytecode)}))
+//
+//(<+->) infixr 1
+//(<+->) m n :== m >> tell n
+//
+//runBC (BC m) = m
+//
+//tell :: [BC] -> ByteCode a p | mTaskType a
+//tell b = BC \s->(zero, {s & bytecode=b++s.bytecode})
+//
+//fmp :: (a -> BC) (ByteCode a p) -> ByteCode a q
+//fmp f b = BC \s->let (a, s`) = runBC b s in (a, {s` & code=[f a:s`.code]})