{-# LANGUAGE TypeFamilies, GeneralizedNewtypeDeriving #-}

module ShouldCompile where

import Control.Applicative (Applicative)

data family S a

newtype instance S Int = S Int
                       deriving Eq

data family S2 a b

newtype instance S2 Int b = S2 (IO b)
                          deriving (Functor, Applicative, Monad)

