{-# 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