diff options
Diffstat (limited to '')
| -rw-r--r-- | app/Scratchy/Syntax.hs | 66 |
1 files changed, 65 insertions, 1 deletions
diff --git a/app/Scratchy/Syntax.hs b/app/Scratchy/Syntax.hs index c77e51a..128ea01 100644 --- a/app/Scratchy/Syntax.hs +++ b/app/Scratchy/Syntax.hs @@ -82,6 +82,70 @@ data SProg a ------------------------------------------------------------ combine :: SProg () -> SProg () -> SProg () -combine = undefined -- Fill this in +-- Base cases +combine (Pure ()) p2 = p2 +combine p1 (Pure ()) = p1 +combine (OnKeyEvent k1 handler1 cont1) p2 = + OnKeyEvent k1 handler1 (combine cont1 p2) + +combine p1 (OnKeyEvent k2 handler2 cont2) = + OnKeyEvent k2 handler2 (combine p1 cont2) + +combine (OnTargetReached sp1 h1 c1) p2 = + OnTargetReached sp1 h1 (combine c1 p2) + +combine p1 (OnTargetReached sp2 h2 c2) = + OnTargetReached sp2 h2 (combine p1 c2) + +combine (OnTargetUpdated sp1 h1 c1) p2 = + OnTargetUpdated sp1 h1 (combine c1 p2) + +combine p1 (OnTargetUpdated sp2 h2 c2) = + OnTargetUpdated sp2 h2 (combine p1 c2) + +combine (OnBarrierHit sp1 h1 c1) p2 = + OnBarrierHit sp1 h1 (combine c1 p2) + +combine p1 (OnBarrierHit sp2 h2 c2) = + OnBarrierHit sp2 h2 (combine p1 c2) + +combine (After dur1 handler1 cont1) p2 = + After dur1 handler1 (combine cont1 p2) + +combine p1 (After dur2 handler2 cont2) = + After dur2 handler2 (combine p1 cont2) + +combine (NewSprite cell pic k1) p2 = + NewSprite cell pic (\sp -> combine (k1 sp) p2) + +combine p1 (NewSprite cell pic k2) = + NewSprite cell pic (combine p1 . k2) + +combine (SetColor sp c cont1) p2 = + SetColor sp c (combine cont1 p2) + +combine p1 (SetColor sp c cont2) = + SetColor sp c (combine p1 cont2) + +combine (SetTarget sp cell cont1) p2 = + SetTarget sp cell (combine cont1 p2) + +combine p1 (SetTarget sp cell cont2) = + SetTarget sp cell (combine p1 cont2) + +combine (GetTarget sp k1) p2 = + GetTarget sp (\cell -> combine (k1 cell) p2) + +combine p1 (GetTarget sp k2) = + GetTarget sp (combine p1 . k2) + +combine (SetBackgroundColor c cont1) p2 = + SetBackgroundColor c (combine cont1 p2) + +combine p1 (SetBackgroundColor c cont2) = + SetBackgroundColor c (combine p1 cont2) + +combine (InspectCell cell k1) p2 = + InspectCell cell (\result -> combine (k1 result) p2) |