I am following this walkthrough on how to draw to an html canvas in purescript. Unfortunately I ran into a problem getting the code to work. I created the following code by following the tutorial but it doesn't compile:
main = do
-- Canvas has type Maybe CanvasElement
canvas <- getCanvasElementById "canvas"
-- Type mismatch: CanvasElement expected, (Maybe CanvasElement) provided
context <- getContext2D canvas
runGraphics context $ do
setFillStyle "#00FFFF"
rect { x: 0, y: 0, w: 400, h: 600 }
fill
I tried to fix the problem by doing the following:
run Nothing = do return Unit -- Doesn't compile
run (Just canvas) = do
g2d <- GraphicsBuilder.getContext2D canvas
runGraphics g2d $ do
setFillStyle "#00FFFF"
rect { x: 0.0, y: 0.0, w: 400.0, h: 600.0 }
fill
main = do
mcanvas <- GraphicsBuilder.getCanvasElementById "canvas"
run mcanvas
How should I handle the "run Nothing" case? In order for it to match the type signature it needs to return an Eff value, is there an easy way to wrap the computation in an Eff monad?