{-# LANGUAGE MultiParamTypeClasses, FlexibleInstances, FlexibleContexts, OverlappingInstances, Trustworthy #-}

module Data.Columbia.FRecord where

import Data.Generics.SYB.WithClass.Context

class HasField scheme f where
	hasField :: scheme t -> f t

instance HasField(PairCtx f f2) f where
	hasField(PairCtx fn _) = fn
instance (HasField scheme f2) => HasField(PairCtx f scheme) f2 where
	hasField(PairCtx _ fn2) = hasField fn2