untouchedPoints :: PrimMonad m => Canvas (PrimState m) -> [P2] -> m [P2]
untouchedPoints canvas points = do
    validPoints <- filterM (untouchedPoint canvas) points
    return validPoints
untouchedPoints :: PrimMonad m => Canvas (PrimState m) -> [P2] -> m [P2]
untouchedPoints canvas points = do
    validPoints <- filterM (untouchedPoint canvas) points
    return validPoints
untouchedPoints canvas points = do
    validPoints <- filterM (untouchedPoint canvas) points
    return validPoints