Skip to content

Parse error on curried context of instance declaration

Assume we have the following classes:

class C1 a; class C2 a; class C3 a; class C4 a

GHC allows you to write a type with an uncurried context, as in:

foo :: (C1 a, C2 b, C3 c) => a -> b -> c

It also allows you to write a type with a curried context, as in:

foo :: C1 a => C2 b => C3 c => a -> b -> c

However it is not allowed to use this curried style of contexts in instance declarations, as in:

instance C1 a => C2 b => C3 c => C4 (SomeType a b c) 

Is this intentional?

Trac metadata
Trac field Value
Version 6.12.2
Type Bug
TypeOfFailure OtherFailure
Priority normal
Resolution Unresolved
Component Compiler
Test case
Differential revisions
BlockedBy
Related
Blocking
CC
Operating system
Architecture
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information