haskellglossjuicy-pixels

IO (Maybe Picture) -> Picture


I'm creating a game with Gloss. I have this function :

block :: IO (Maybe Picture)
block = loadJuicyPNG "block.png"

How do I take this IO (Maybe Picture) and turn it into a Picture?


Solution

  • You need to bind the value. This is done either with the bind function (>>=), or by do-notation:

    main :: IO ()
    main = do
        pic <- block
        case pic of
            Just p -> ...   -- loading succeeded, p is a Picture
            Nothing -> ...  -- loading failed
    

    It is a Maybe Picture because the loading might fail, and you have to handle that possible failure somehow.