copilot-core-3.3: An intermediate representation for Copilot.

Copilot.Core.Operators

Description

Internal representation of Copilot operators.

Synopsis

# Documentation

data Op1 a b where Source #

Unary operators.

Constructors

 Not :: Op1 Bool Bool Abs :: Num a => Type a -> Op1 a a Sign :: Num a => Type a -> Op1 a a Recip :: Fractional a => Type a -> Op1 a a Exp :: Floating a => Type a -> Op1 a a Sqrt :: Floating a => Type a -> Op1 a a Log :: Floating a => Type a -> Op1 a a Sin :: Floating a => Type a -> Op1 a a Tan :: Floating a => Type a -> Op1 a a Cos :: Floating a => Type a -> Op1 a a Asin :: Floating a => Type a -> Op1 a a Atan :: Floating a => Type a -> Op1 a a Acos :: Floating a => Type a -> Op1 a a Sinh :: Floating a => Type a -> Op1 a a Tanh :: Floating a => Type a -> Op1 a a Cosh :: Floating a => Type a -> Op1 a a Asinh :: Floating a => Type a -> Op1 a a Atanh :: Floating a => Type a -> Op1 a a Acosh :: Floating a => Type a -> Op1 a a BwNot :: Bits a => Type a -> Op1 a a Cast Fields:: (Integral a, Num b) => Type a -> Type b -> Op1 a bCasting operator. GetField Fields:: KnownSymbol s => Type a -> Type b -> (a -> Field s b) -> Op1 a bProjection of a struct field.

data Op2 a b c where Source #

Binary operators.

Constructors

 And :: Op2 Bool Bool Bool Or :: Op2 Bool Bool Bool Add :: Num a => Type a -> Op2 a a a Sub :: Num a => Type a -> Op2 a a a Mul :: Num a => Type a -> Op2 a a a Mod :: Integral a => Type a -> Op2 a a a Div :: Integral a => Type a -> Op2 a a a Fdiv :: Fractional a => Type a -> Op2 a a a Pow :: Floating a => Type a -> Op2 a a a Logb :: Floating a => Type a -> Op2 a a a Eq :: Eq a => Type a -> Op2 a a Bool Ne :: Eq a => Type a -> Op2 a a Bool Le :: Ord a => Type a -> Op2 a a Bool Ge :: Ord a => Type a -> Op2 a a Bool Lt :: Ord a => Type a -> Op2 a a Bool Gt :: Ord a => Type a -> Op2 a a Bool BwAnd :: Bits a => Type a -> Op2 a a a BwOr :: Bits a => Type a -> Op2 a a a BwXor :: Bits a => Type a -> Op2 a a a BwShiftL :: (Bits a, Integral b) => Type a -> Type b -> Op2 a b a BwShiftR :: (Bits a, Integral b) => Type a -> Type b -> Op2 a b a Index Fields:: Type (Array n t) -> Op2 (Array n t) Word32 tArray access/projection of an array element.

data Op3 a b c d where Source #

Ternary operators.

Constructors

 Mux :: Type a -> Op3 Bool a a a