module LiftToTopLevel.Signature2 where
{- Lifting baz to the top level should bring in xx and a as parameters,
and update the signature to include these.
The refactoring cannot be attempted as the resulting signature
requires Rank2Types
baz:: (forall t. Num t => t -> t -> t) -> Int ->Int
baz :: Num a => (a -> t1 -> t) -> t1 -> t
baz xx a= xx 1 a
-}
foo a = baz
where
baz :: Int
baz = xx 1 a
xx :: (Num t) => t -> t -> t
xx p1 p2 = p1 + p2