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