ruin-0.1.0.0: test/MustCompile/TH.hs
{-# Language DataKinds #-}
{-# Language DeriveGeneric #-}
{-# Language DuplicateRecordFields #-}
{-# Language FlexibleContexts #-}
{-# Language FlexibleInstances #-}
{-# Language GADTs #-}
{-# Language MultiParamTypeClasses #-}
{-# Language OverloadedLabels #-}
{-# Language PolyKinds #-}
{-# Language TemplateHaskell #-}
{-# Language TypeFamilies #-}
{-# Language TypeOperators #-}
{-# Language UndecidableInstances #-}
module MustCompile.TH where
import GHC.Generics (Generic)
import Language.Haskell.TH.Syntax (Lift(lift))
import Data.Ruin
import Data.Ruin.R
data family Family (t :: k) y
data instance Family t Int where
MkFamily1 :: {x,y :: Int} -> Family t Int
deriving Generic
$(makeRecords ['MkFamily1])
newtype instance Family [] Char =
MkFamily2 {x :: Int}
deriving Generic
$(makeRecords ['MkFamily2])
-----
r :: Rcrd '[ "a" ::: () , "b" ::: Bool ]
r = $(lift (oneR #a () `plusR` oneR #b True))