.

1
2
3
4
5
6
7
8
{-# LANGUAGE ImpredicativeTypes #-}
{-# LANGUAGE RankNTypes #-}

type X = Maybe (forall a. Show a => a)

f :: X -> Maybe Int
f Nothing = Nothing
f (Just x) = Just x