data-type-0.0.1: Data/Type/Member.hs
{-# LANGUAGE UndecidableInstances, EmptyDataDecls,
FlexibleInstances, MultiParamTypeClasses
#-}
-- .$Header: c:/Source/Haskell/Type/Data/Type/RCS/Member.hs,v 1.2 2010/02/03 01:13:16 dosuser Exp dosuser $
module Data.Type.Member where
import Data.Type.Apply
import Data.Type.Bool
import Data.Type.Eq
import Data.Type.TList
data Member s
member :: Member s
member = undefined
mNil :: Member TNil
mNil = member
mUnit :: a -> Member a
mUnit _ = member
mCons :: Member a -> Member b -> Member (a :*: b)
mCons _ _ = member
infixr 5 `mCons`
instance Apply (Member TNil) a TFalse
instance TypeEq s a b => Apply (Member s) a b
instance (TypeEq h a b1, Apply (Member t) a b2, TOr b1 b2 b) =>
Apply (Member (h :*: t)) a b
-- vim: expandtab:tabstop=4:shiftwidth=4