diff --git a/Intro/Vect.idr b/Intro/Vect.idr index ff494ab..e626837 100644 --- a/Intro/Vect.idr +++ b/Intro/Vect.idr @@ -17,7 +17,6 @@ data Vect : Nat -> Type -> Type where append : Vect n a -> Vect m a -> Vect (n + m) a - {- Try to write this using the interactive tools alone: diff --git a/Invaders/Aliens.idr b/Invaders/Aliens.idr index 18142f3..15489cc 100644 --- a/Invaders/Aliens.idr +++ b/Invaders/Aliens.idr @@ -52,7 +52,7 @@ checkHit bs as = checkAll bs as [] [] checkAll [] as asAcc bsAcc = (bsAcc, as ++ asAcc) drawAliens : List Alien -> { [SDL_ON] } Eff () -drawAliens [] = return () +drawAliens [] = pure () drawAliens (a :: as) = do let (x, y) = Alien.position a drawAlien x y drawAliens as diff --git a/Invaders/Gamestate.idr b/Invaders/Gamestate.idr index 028cd57..8cc4860 100644 --- a/Invaders/Gamestate.idr +++ b/Invaders/Gamestate.idr @@ -54,12 +54,12 @@ removeHit gs = let bs = bullets gs in record { bullets = bs', aliens = as' } gs drawBullets : List (Int, Int) -> { [SDL_ON] } Eff () -drawBullets [] = return () +drawBullets [] = pure () drawBullets ((x, y) :: bs) = do rectangle red (x-1) (y-4) 2 8 drawBullets bs drawBombs : List (Int, Int) -> { [SDL_ON] } Eff () -drawBombs [] = return () +drawBombs [] = pure () drawBombs ((x, y) :: bs) = do rectangle yellow (x-1) (y-4) 2 8 drawBombs bs @@ -67,7 +67,7 @@ randomDropBomb : GS () randomDropBomb = randomDrop (map (Alien.position) (aliens !(Gamestate :- get))) where randomDrop : List (Int, Int) -> GS () - randomDrop [] = return () + randomDrop [] = pure () randomDrop ((x, y) :: as) = do if (!(rndInt 1 3000) == 100) then (do s <- Gamestate :- get @@ -94,7 +94,7 @@ updateGamestate = do gs <- Gamestate :- get getPos : GS (Int, Int) getPos = do s <- Gamestate :- get - return (position s) + pure (position s) xmove : Int -> GS () xmove x = do s <- Gamestate :- get @@ -112,14 +112,14 @@ addBullet = do s <- Gamestate :- get -- Deal with keypresses from SDL process : Maybe Event -> GS Bool -process (Just AppQuit) = return False -process (Just (KeyDown KeyLeftArrow)) = do xmove (-2); return True -process (Just (KeyUp KeyLeftArrow)) = do xmove 0; return True -process (Just (KeyDown KeyRightArrow)) = do xmove 2; return True -process (Just (KeyUp KeyRightArrow)) = do xmove 0; return True -process (Just (KeyDown KeyUpArrow)) = do ymove (-2); return True -process (Just (KeyUp KeyUpArrow)) = do ymove 0; return True -process (Just (KeyDown KeyDownArrow)) = do ymove 2; return True -process (Just (KeyUp KeyDownArrow)) = do ymove 0; return True -process (Just (KeyDown KeySpace)) = do addBullet; return True -process _ = return True +process (Just AppQuit) = pure False +process (Just (KeyDown KeyLeftArrow)) = do xmove (-2); pure True +process (Just (KeyUp KeyLeftArrow)) = do xmove 0; pure True +process (Just (KeyDown KeyRightArrow)) = do xmove 2; pure True +process (Just (KeyUp KeyRightArrow)) = do xmove 0; pure True +process (Just (KeyDown KeyUpArrow)) = do ymove (-2); pure True +process (Just (KeyUp KeyUpArrow)) = do ymove 0; pure True +process (Just (KeyDown KeyDownArrow)) = do ymove 2; pure True +process (Just (KeyUp KeyDownArrow)) = do ymove 0; pure True +process (Just (KeyDown KeySpace)) = do addBullet; pure True +process _ = pure True diff --git a/Invaders/Rnd.idr b/Invaders/Rnd.idr index ea1dc97..1295d34 100644 --- a/Invaders/Rnd.idr +++ b/Invaders/Rnd.idr @@ -17,6 +17,6 @@ RND = MkEff Int Random rndInt : Int -> Int -> { [RND] } Eff Int rndInt lower upper = do v <- call GetRandom - return (abs (v `prim__sremInt` (upper - lower)) + lower) + pure (abs (v `prim__sremInt` (upper - lower)) + lower) diff --git a/Invaders/Starfield.idr b/Invaders/Starfield.idr index 5f3097b..dc945da 100644 --- a/Invaders/Starfield.idr +++ b/Invaders/Starfield.idr @@ -29,7 +29,7 @@ updateStarfield = do xs <- Starfield :- get Starfield :- put xs' where upd : List (Int, Int) -> List (Int, Int) -> { [RND] } Eff (List (Int, Int)) - upd acc [] = return acc + upd acc [] = pure acc upd acc ((x, y) :: xs) = if (y > 479) then do x <- rndInt 0 639 @@ -38,7 +38,7 @@ updateStarfield = do xs <- Starfield :- get upd ((x, y+1) :: acc) xs drawStarfield : List (Int, Int) -> { [SDL_ON] } Eff () -drawStarfield [] = return () +drawStarfield [] = pure () drawStarfield ((x, y) :: xs) = do line white x y x y drawStarfield xs