{-# LANGUAGE TemplateHaskell #-} -------------------------------------------------------------------- ---- | ---- Copyright : (c) Edward Kmett and Dan Doel 2013-2014 ---- License : BSD3 ---- Maintainer: Edward Kmett <ekmett@gmail.com> ---- Stability : experimental ---- Portability: non-portable (DeriveDataTypeable) ---- ---------------------------------------------------------------------- module Ermine.Syntax.Class ( Class(Class) , HasClass(..) ) where import Bound import Control.Lens import Data.Void import Ermine.Syntax.Hint import Ermine.Syntax.Kind as Kind import Ermine.Syntax.Type as Type data Class = Class { _kindArgs :: [Hint] , _typeArgs :: [(Hint, Scope Int Kind Void)] , _context :: [Type Void Int] } makeClassy ''Class