Skip to content

Implicit parameters with higher rank types are incorrectly rejected by the parser

If I try to define:

foo :: (?blah :: forall a. a -> a) => ()

then I get the error:

error: parse error on input `forall'

However, adding parentheses around the type fixes the issue:

foo :: (?blah :: (forall a. a -> a)) => ()

I'm not sure there is much use for higher rank implicit parameters because of #18759, but this still seems to be a bug in the parser.

To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information