inline-r-0.9.1: src/Foreign/R/Constraints.hs
-- |
-- Copyright: (C) 2013 Amgen, Inc.
--
-- R-specific predicates for encoding form constraints in type signatures. There
-- are no actual bindings in this module.
{-# LANGUAGE ConstraintKinds #-}
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE PolyKinds #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE TypeOperators #-}
module Foreign.R.Constraints where
import GHC.Exts (Constraint)
import {-# SOURCE #-} Foreign.R.Type (SEXPTYPE(..))
infix 1 :∈
-- | The predicate @a :∈ as@ states that @a@ is a member type of the set @as@.
type family (a :: SEXPTYPE) :∈ (as :: [SEXPTYPE]) :: Constraint where
'Any :∈ as = ()
a :∈ (a ': as) = ()
a :∈ (b ': as) = a :∈ as
-- | Non unicode wrapper for the ':∈' type family.
type In a b = a :∈ b