generateCanvas :: PrimMonad m => Width -> Height -> StdGen -> m (Canvas (PrimState m))
generateCanvas w h g = do
    let seed = (quot w 2, quot h 2)
        seedColor = (207,0,15)
        canvasPoints = V.fromList [(j,i) | i <- [0..height-1], j <- [0..width-1]]
    mV <- UV.thaw $ UV.fromList $ generatePixels w h -- create canvas
    _  <- drawPixel mV seedColor seed -- draw center pixel (seed)
    _  <- draw mV canvasPoints seedColor g
    return mV
generateCanvas :: PrimMonad m => Width -> Height -> StdGen -> m (Canvas (PrimState m))
generateCanvas w h g = do
    let seed = (quot w 2, quot h 2)
        seedColor = (207,0,15)
        canvasPoints = V.fromList [(j,i) | i <- [0..height-1], j <- [0..width-1]]
    mV <- UV.thaw $ UV.fromList $ generatePixels w h -- create canvas
    _  <- drawPixel mV seedColor seed -- draw center pixel (seed)
    _  <- draw mV canvasPoints seedColor g
    return mV
generateCanvas w h g = do
    let seed = (quot w 2, quot h 2)
        seedColor = (207,0,15)
        canvasPoints = V.fromList [(j,i) | i <- [0..height-1], j <- [0..width-1]]
    mV <- UV.thaw $ UV.fromList $ generatePixels w h -- create canvas
    _  <- drawPixel mV seedColor seed -- draw center pixel (seed)
    _  <- draw mV canvasPoints seedColor g
    return mV