1 {-# LANGUAGE DeriveGeneric #-}
2 {-# LANGUAGE NoMonomorphismRestriction #-}
3 {-# LANGUAGE TypeFamilies #-}
5 -- These can go if the tuple instances are accepted upstream.
7 {-# LANGUAGE TemplateHaskell #-}
8 {-# LANGUAGE DataKinds #-}
9 {-# OPTIONS_GHC -fno-warn-orphans #-}
16 import Generics.SOP ( Code, Generic(..) )
17 import Generics.SOP.TH ( deriveGeneric )
19 deriveGeneric ''(,,,,,,,,,,,,,,,)
20 deriveGeneric ''(,,,,,,,,,,,,,,,,)
21 deriveGeneric ''(,,,,,,,,,,,,,,,,,)
22 deriveGeneric ''(,,,,,,,,,,,,,,,,,,)
23 deriveGeneric ''(,,,,,,,,,,,,,,,,,,,) -- 20
24 deriveGeneric ''(,,,,,,,,,,,,,,,,,,,,)
25 deriveGeneric ''(,,,,,,,,,,,,,,,,,,,,,)
26 deriveGeneric ''(,,,,,,,,,,,,,,,,,,,,,,)
27 deriveGeneric ''(,,,,,,,,,,,,,,,,,,,,,,,)
28 deriveGeneric ''(,,,,,,,,,,,,,,,,,,,,,,,,) -- 25
29 deriveGeneric ''(,,,,,,,,,,,,,,,,,,,,,,,,,)
30 deriveGeneric ''(,,,,,,,,,,,,,,,,,,,,,,,,,,)
31 deriveGeneric ''(,,,,,,,,,,,,,,,,,,,,,,,,,,,)
32 deriveGeneric ''(,,,,,,,,,,,,,,,,,,,,,,,,,,,,)
33 deriveGeneric ''(,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) -- 30
35 -- | Convert a simple product type into a tuple, generically.
39 -- >>> import qualified GHC.Generics as GHC ( Generic )
40 -- >>> data Foo = Bar Int Int Int Int deriving (Show, GHC.Generic)
41 -- >>> instance Generic Foo
42 -- >>> let b = Bar 1 2 3 4
43 -- >>> to_tuple b :: (Int,Int,Int,Int)
46 to_tuple:: (Generic a, Generic c, Code a ~ Code c) => a -> c