{-# LANGUAGE TypeFamilies #-}
module Futhark.IR.Rep
( RepTypes (..),
module Futhark.IR.RetType,
)
where
import Data.Kind qualified
import Futhark.IR.Prop.Types
import Futhark.IR.RetType
import Futhark.IR.Syntax.Core (DeclExtType, DeclType, ExtType, Type)
class
( Show (LetDec l),
Show (ExpDec l),
Show (BodyDec l),
Show (FParamInfo l),
Show (LParamInfo l),
Show (RetType l),
Show (BranchType l),
Show (Op l),
Eq (LetDec l),
Eq (ExpDec l),
Eq (BodyDec l),
Eq (FParamInfo l),
Eq (LParamInfo l),
Eq (RetType l),
Eq (BranchType l),
Eq (Op l),
Ord (LetDec l),
Ord (ExpDec l),
Ord (BodyDec l),
Ord (FParamInfo l),
Ord (LParamInfo l),
Ord (RetType l),
Ord (BranchType l),
Ord (Op l),
IsRetType (RetType l),
IsBodyType (BranchType l),
Typed (FParamInfo l),
Typed (LParamInfo l),
Typed (LetDec l),
DeclTyped (FParamInfo l)
) =>
RepTypes l
where
type LetDec l :: Data.Kind.Type
type LetDec l = Type
type ExpDec l :: Data.Kind.Type
type ExpDec l = ()
type BodyDec l :: Data.Kind.Type
type BodyDec l = ()
type FParamInfo l :: Data.Kind.Type
type FParamInfo l = DeclType
type LParamInfo l :: Data.Kind.Type
type LParamInfo l = Type
type RetType l :: Data.Kind.Type
type RetType l = DeclExtType
type BranchType l :: Data.Kind.Type
type BranchType l = ExtType
type Op l :: Data.Kind.Type
type Op l = ()