interpretOpIO :: Op Int -> MachineM (Op Int)
interpretOpIO (Get n)
    | n <= 0    = return NoOp
    | otherwise = do
        (MachineIO read' _) <- ask
        c <- liftIO read'
        return $ Set $ fromIntegral c
interpretOpIO :: Op Int -> MachineM (Op Int)
interpretOpIO (Get n)
    | n <= 0    = return NoOp
    | otherwise = do
        (MachineIO read' _) <- ask
        c <- liftIO read'
        return $ Set $ fromIntegral c
interpretOpIO (Get n)
    | n <= 0    = return NoOp
    | otherwise = do
        (MachineIO read' _) <- ask
        c <- liftIO read'
        return $ Set $ fromIntegral c