{-# LANGUAGE RankNTypes, TypeApplications #-}


module Vta2 where

checkIf :: Bool -> (forall a. a -> a) -> (Bool, Int)
checkIf _ = if True
            then \f -> (f True, f 5)
            else \f -> (f False, f @Int 3)

checkCase :: Bool -> (forall a. a -> a) -> (Bool, Int)
checkCase _ = case True of
                True -> \f -> (f True, f 5)
                False -> \f -> (f False, f @Int 3)