Я следую this walkthrough о том, как рисовать на холсте html в purescript. К сожалению, я столкнулся с проблемой получения кода для работы. Я создал следующий код, следуя учебник, но он не компилируется:Как вернуть монаду Eff без эффективного вычисления?
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
Я попытался решить эту проблему, выполнив следующие действия:
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
Как я должен обрабатывать «не запускать ничего» дело? Чтобы он соответствовал сигнатуре типа, ему нужно вернуть значение Eff, есть ли простой способ обернуть вычисление в монаде Eff?
Удивительно, спасибо! –