Guest User

Untitled

a guest
Aug 19th, 2018
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.66 KB | None | 0 0
  1. {-# LANGUAGE DuplicateRecordFields #-}
  2. {-# LANGUAGE KindSignatures #-}
  3. {-# LANGUAGE DataKinds #-}
  4. {-# LANGUAGE TypeFamilies #-}
  5. {-# LANGUAGE StrictData #-}
  6.  
  7. {-
  8.  
  9. Something very similar to this works on 8.2.2, I have it in a
  10. (non-free) codebase, but can’t quite minimize it… Hmm.
  11.  
  12. It stopped working when I updated that codebase’s compiler to 8.4.3.
  13.  
  14. -}
  15.  
  16. module Main where
  17.  
  18. data AB = A | B
  19.  
  20. class SomeClass (ab :: AB) where
  21. data SomeData ab
  22.  
  23. instance SomeClass 'A where
  24. data SomeData 'A = SomeData'A{someField :: Int} deriving Show
  25.  
  26. instance SomeClass 'B where
  27. data SomeData 'B = SomeData'B{someField :: Int}
  28.  
  29. main :: IO ()
  30. main = print SomeData'A{someField = 5}
Add Comment
Please, Sign In to add comment