fork download
  1. {-# LANGUAGE UndecidableInstances, KindSignatures, TypeApplications, FlexibleInstances #-}
  2.  
  3. class A (m :: * -> *)
  4.  
  5. class A1 (m :: * -> *)
  6.  
  7. class B (m :: * -> *)
  8.  
  9. instance A m => B m
  10.  
  11. instance {-# OVERLAPPING #-} A1 m => B m
  12.  
  13. data C a
  14.  
  15. instance A C
  16.  
  17. data D a
  18.  
  19. instance A1 D
  20.  
  21. implicitly :: a => ()
  22. implicitly = ()
  23.  
  24. test = implicitly @(B C)
  25. test1 = implicitly @(B D)
  26.  
  27. main = print "ok"
Compilation error #stdin compilation error #stdout 0s 0KB
stdin
Standard input is empty
compilation info
[1 of 1] Compiling Main             ( prog.hs, prog.o )

prog.hs:9:10: error:
    Duplicate instance declarations:
      instance A m => B m -- Defined at prog.hs:9:10
      instance [overlapping] A1 m => B m -- Defined at prog.hs:11:30
  |
9 | instance A m => B m
  |          ^^^^^^^^^^
stdout
Standard output is empty