tcfail165.hs:19:23: error: • Couldn't match expected type ‘forall a. Show a => a -> String’ with actual type ‘b0 -> String’ • In the second argument of ‘putMVar’, namely ‘(show :: forall b. Show b => b -> String)’ In a stmt of a 'do' block: putMVar var (show :: forall b. Show b => b -> String) In the expression: do var <- newEmptyMVar :: IO (MVar (forall a. Show a => a -> String)) putMVar var (show :: forall b. Show b => b -> String)