1 2 3 4 5 6 7
{-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE RecursiveDo #-} main = pure () foo :: forall a. a -> a foo x = mdo x