diff --git a/Effects/Expr.idr b/Effects/Expr.idr index e159525..95df8e5 100644 --- a/Effects/Expr.idr +++ b/Effects/Expr.idr @@ -14,10 +14,10 @@ data Expr = Var String Env : Type Env = List (String, Integer) -getRnd : Integer -> Eff Integer [RND] +getRnd : Integer -> Eff Integer [RND, STDIO] getRnd upper = rndInt 0 upper -eval : Expr -> Eff Integer [EXCEPTION String, STDIO, RND, STATE Env] +eval : Expr -> Eff Integer [STDIO, EXCEPTION String, STATE Env, RND] eval (Var x) = case lookup x !get of Nothing => raise ("No such variable " ++ x) @@ -33,7 +33,7 @@ testExpr = Add (Add (Var "foo") (Val 42)) (Random 100) runEval : List (String, Integer) -> Expr -> IO Integer runEval args expr = run (eval' expr) - where eval' : Expr -> Eff Integer [EXCEPTION String, STDIO, RND, STATE Env] + where eval' : Expr -> Eff Integer [EXCEPTION String, RND, STDIO, STATE Env] eval' e = do put args srand 1234 eval e diff --git a/Invaders/Aliens.idr b/Invaders/Aliens.idr index 46e7848..18142f3 100644 --- a/Invaders/Aliens.idr +++ b/Invaders/Aliens.idr @@ -3,6 +3,8 @@ module Aliens import Effect.SDL import Effects +%access public export + record Alien where constructor MkAlien position : (Int, Int) diff --git a/Invaders/Gamestate.idr b/Invaders/Gamestate.idr index 05535ca..028cd57 100644 --- a/Invaders/Gamestate.idr +++ b/Invaders/Gamestate.idr @@ -8,6 +8,8 @@ import Effect.StdIO import Aliens import Rnd +%access public export + record Gamestate where constructor MkGamestate position : (Int, Int) diff --git a/Invaders/Main.idr b/Invaders/Main.idr index 071f894..c5aa923 100644 --- a/Invaders/Main.idr +++ b/Invaders/Main.idr @@ -43,8 +43,7 @@ emain = do putStrLn "Initialising" quit where draw : Running () - draw = with Effects do - rectangle black 0 0 640 480 + draw = do rectangle black 0 0 640 480 drawStarfield !(Starfield :- get) gs <- Gamestate :- get drawBullets (bullets gs) @@ -76,6 +75,7 @@ emain = do putStrLn "Initialising" eventLoop = do draw updateWorld when !(process !poll) eventLoop + main : IO () main = runInit [(), Frames := 0, @@ -83,5 +83,3 @@ main = runInit [(), Frames := 0, Starfield := List.Nil, 1234567890, ()] emain - - diff --git a/Invaders/Rnd.idr b/Invaders/Rnd.idr index 226468c..ea1dc97 100644 --- a/Invaders/Rnd.idr +++ b/Invaders/Rnd.idr @@ -2,6 +2,8 @@ module Rnd import Effects +%access public export + data Random : Effect where GetRandom : Random Int Int (\v => Int) diff --git a/Invaders/Starfield.idr b/Invaders/Starfield.idr index 69762ab..5f3097b 100644 --- a/Invaders/Starfield.idr +++ b/Invaders/Starfield.idr @@ -9,6 +9,8 @@ import Effect.State import Rnd +%access public export + data Starfield : Type where -- for labelling state StarEff : Type -> Type