{-# LANGUAGE ImplicitParams, Rank2Types #-}

-- !!! Implicit parameters, and Rank-2 types
-- This one made the 5.00.1 not print anything

module Main where

foo :: ((?x :: Int) => IO a) -> Int -> IO a
        -- Note the rank2 type
foo s z = do  let ?x = z   in s         -- Should pick up ?x = z
              let ?x = z+3 in s         -- Ditto z+3

main = foo (print ?x) 42

