class () => C a where foo :: forall a[1] . C a[1] => a[1] -> a[1] foo x = x plus :: Int -> Int -> Int plus x[1] = let plus' :: Int -> Int plus' y = x[1] + y in plus' main :: Int main = plus (plus 1 2) 3