Stability | experimental |
---|---|
Maintainer | conal@conal.net |
Known constants
- data Op where
- Lit :: Show a => a -> Op a
- And :: IsNat n => Op (Binop (Vec n Bool))
- Or :: IsNat n => Op (Binop (Vec n Bool))
- Not :: IsNat n => Op (Unop (Vec n Bool))
- EqualV :: (IsNat n, IsScalar a, Eq a) => Nat n -> Op (Vec n a -> Vec n a -> Vec n Bool)
- AllV :: IsNat n => Op (Vec n Bool -> B1)
- AnyV :: IsNat n => Op (Vec n Bool -> B1)
- Equal :: Eq (Vec n a) => Op (Pred2 (Vec n a))
- Lt :: (IsNat n, IsScalar a, Ord a) => Nat n -> Op (Vec n a -> Vec n a -> Vec n Bool)
- Le :: (IsNat n, IsScalar a, Ord a) => Nat n -> Op (Vec n a -> Vec n a -> Vec n Bool)
- Min :: (IsNat n, IsScalar a, Ord a) => Op (Binop (Vec n a))
- Max :: (IsNat n, IsScalar a, Ord a) => Op (Binop (Vec n a))
- Negate :: (IsNat n, IsScalar a, Num a) => Op (Unop (Vec n a))
- Add :: (IsNat n, IsScalar a, Num a) => Op (Binop (Vec n a))
- Sub :: (IsNat n, IsScalar a, Num a) => Op (Binop (Vec n a))
- Mul :: (IsNat n, IsScalar a, Num a) => Op (Binop (Vec n a))
- Abs :: (IsNat n, IsScalar a, Num a) => Op (Unop (Vec n a))
- Signum :: (IsNat n, IsScalar a, Num a) => Op (Unop (Vec n a))
- Quot :: (IsNat n, IsScalar a, Integral a) => Op (Binop (Vec n a))
- Rem :: (IsNat n, IsScalar a, Integral a) => Op (Binop (Vec n a))
- Div :: (IsNat n, IsScalar a, Integral a) => Op (Binop (Vec n a))
- Mod :: (IsNat n, IsScalar a, Integral a) => Op (Binop (Vec n a))
- Recip :: (IsNat n, IsScalar a, Fractional a) => Op (Unop (Vec n a))
- Divide :: (IsNat n, IsScalar a, Fractional a) => Op (Binop (Vec n a))
- Sqrt :: (IsNat n, IsScalar a, Floating a) => Op (Unop (Vec n a))
- Exp :: (IsNat n, IsScalar a, Floating a) => Op (Unop (Vec n a))
- Log :: (IsNat n, IsScalar a, Floating a) => Op (Unop (Vec n a))
- Sin :: (IsNat n, IsScalar a, Floating a) => Op (Unop (Vec n a))
- Cos :: (IsNat n, IsScalar a, Floating a) => Op (Unop (Vec n a))
- Asin :: (IsNat n, IsScalar a, Floating a) => Op (Unop (Vec n a))
- Atan :: (IsNat n, IsScalar a, Floating a) => Op (Unop (Vec n a))
- Acos :: (IsNat n, IsScalar a, Floating a) => Op (Unop (Vec n a))
- Sinh :: (IsNat n, IsScalar a, Floating a) => Op (Unop (Vec n a))
- Cosh :: (IsNat n, IsScalar a, Floating a) => Op (Unop (Vec n a))
- Asinh :: (IsNat n, IsScalar a, Floating a) => Op (Unop (Vec n a))
- Atanh :: (IsNat n, IsScalar a, Floating a) => Op (Unop (Vec n a))
- Acosh :: (IsNat n, IsScalar a, Floating a) => Op (Unop (Vec n a))
- Truncate :: IsNat n => Op (Unop (Vec n R))
- Round :: IsNat n => Op (Unop (Vec n R))
- Ceiling :: IsNat n => Op (Unop (Vec n R))
- Floor :: IsNat n => Op (Unop (Vec n R))
- FMod :: (IsNat n, IsScalar a, FMod a) => Op (Binop (Vec n a))
- VVec2 :: IsScalar a => Op (One a -> One a -> Two a)
- VVec3 :: IsScalar a => Op (One a -> One a -> One a -> Three a)
- VVec4 :: IsScalar a => Op (One a -> One a -> One a -> One a -> Four a)
- Dot :: IsNat n => Op (Vec n R -> Vec n R -> R1)
- Swizzle :: (IsNat n, IsNat m, IsScalar a) => Vec n (Index m) -> Op (Vec m a -> Vec n a)
- Unit :: Op ()
- Pair :: Op (a -> b -> (a, b))
- Fst :: Op ((a, b) -> a)
- Snd :: Op ((a, b) -> b)
- If :: HasType a => Op (B1 -> Binop a)
- Cat :: (IsNat m, IsNat n, IsNat (m :+: n), IsScalar a) => Nat m -> Nat n -> VectorT (m :+: n) a -> Op (Vec m a -> Vec n a -> Vec (m :+: n) a)
- UniformV :: IsNat n => VectorT n a -> Op (One a -> Vec n a)
- Scale :: (IsNat n, Num a, IsScalar a) => Op (One a -> Unop (Vec n a))
- Texture :: IsNat n => Nat n -> Op (Sampler n -> Vec n R -> R4)
- data OpInfo a = OpInfo {}
- info :: Op a -> OpInfo a
- opExpr :: Op z -> [Expr] -> Expr
- opVal :: Op a -> a
- opEq :: Op a -> Op b -> Bool
Documentation
Lit :: Show a => a -> Op a | |
And :: IsNat n => Op (Binop (Vec n Bool)) | |
Or :: IsNat n => Op (Binop (Vec n Bool)) | |
Not :: IsNat n => Op (Unop (Vec n Bool)) | |
EqualV :: (IsNat n, IsScalar a, Eq a) => Nat n -> Op (Vec n a -> Vec n a -> Vec n Bool) | |
AllV :: IsNat n => Op (Vec n Bool -> B1) | |
AnyV :: IsNat n => Op (Vec n Bool -> B1) | |
Equal :: Eq (Vec n a) => Op (Pred2 (Vec n a)) | |
Lt :: (IsNat n, IsScalar a, Ord a) => Nat n -> Op (Vec n a -> Vec n a -> Vec n Bool) | |
Le :: (IsNat n, IsScalar a, Ord a) => Nat n -> Op (Vec n a -> Vec n a -> Vec n Bool) | |
Min :: (IsNat n, IsScalar a, Ord a) => Op (Binop (Vec n a)) | |
Max :: (IsNat n, IsScalar a, Ord a) => Op (Binop (Vec n a)) | |
Negate :: (IsNat n, IsScalar a, Num a) => Op (Unop (Vec n a)) | |
Add :: (IsNat n, IsScalar a, Num a) => Op (Binop (Vec n a)) | |
Sub :: (IsNat n, IsScalar a, Num a) => Op (Binop (Vec n a)) | |
Mul :: (IsNat n, IsScalar a, Num a) => Op (Binop (Vec n a)) | |
Abs :: (IsNat n, IsScalar a, Num a) => Op (Unop (Vec n a)) | |
Signum :: (IsNat n, IsScalar a, Num a) => Op (Unop (Vec n a)) | |
Quot :: (IsNat n, IsScalar a, Integral a) => Op (Binop (Vec n a)) | |
Rem :: (IsNat n, IsScalar a, Integral a) => Op (Binop (Vec n a)) | |
Div :: (IsNat n, IsScalar a, Integral a) => Op (Binop (Vec n a)) | |
Mod :: (IsNat n, IsScalar a, Integral a) => Op (Binop (Vec n a)) | |
Recip :: (IsNat n, IsScalar a, Fractional a) => Op (Unop (Vec n a)) | |
Divide :: (IsNat n, IsScalar a, Fractional a) => Op (Binop (Vec n a)) | |
Sqrt :: (IsNat n, IsScalar a, Floating a) => Op (Unop (Vec n a)) | |
Exp :: (IsNat n, IsScalar a, Floating a) => Op (Unop (Vec n a)) | |
Log :: (IsNat n, IsScalar a, Floating a) => Op (Unop (Vec n a)) | |
Sin :: (IsNat n, IsScalar a, Floating a) => Op (Unop (Vec n a)) | |
Cos :: (IsNat n, IsScalar a, Floating a) => Op (Unop (Vec n a)) | |
Asin :: (IsNat n, IsScalar a, Floating a) => Op (Unop (Vec n a)) | |
Atan :: (IsNat n, IsScalar a, Floating a) => Op (Unop (Vec n a)) | |
Acos :: (IsNat n, IsScalar a, Floating a) => Op (Unop (Vec n a)) | |
Sinh :: (IsNat n, IsScalar a, Floating a) => Op (Unop (Vec n a)) | |
Cosh :: (IsNat n, IsScalar a, Floating a) => Op (Unop (Vec n a)) | |
Asinh :: (IsNat n, IsScalar a, Floating a) => Op (Unop (Vec n a)) | |
Atanh :: (IsNat n, IsScalar a, Floating a) => Op (Unop (Vec n a)) | |
Acosh :: (IsNat n, IsScalar a, Floating a) => Op (Unop (Vec n a)) | |
Truncate :: IsNat n => Op (Unop (Vec n R)) | |
Round :: IsNat n => Op (Unop (Vec n R)) | |
Ceiling :: IsNat n => Op (Unop (Vec n R)) | |
Floor :: IsNat n => Op (Unop (Vec n R)) | |
FMod :: (IsNat n, IsScalar a, FMod a) => Op (Binop (Vec n a)) | |
VVec2 :: IsScalar a => Op (One a -> One a -> Two a) | |
VVec3 :: IsScalar a => Op (One a -> One a -> One a -> Three a) | |
VVec4 :: IsScalar a => Op (One a -> One a -> One a -> One a -> Four a) | |
Dot :: IsNat n => Op (Vec n R -> Vec n R -> R1) | |
Swizzle :: (IsNat n, IsNat m, IsScalar a) => Vec n (Index m) -> Op (Vec m a -> Vec n a) | |
Unit :: Op () | |
Pair :: Op (a -> b -> (a, b)) | |
Fst :: Op ((a, b) -> a) | |
Snd :: Op ((a, b) -> b) | |
If :: HasType a => Op (B1 -> Binop a) | |
Cat :: (IsNat m, IsNat n, IsNat (m :+: n), IsScalar a) => Nat m -> Nat n -> VectorT (m :+: n) a -> Op (Vec m a -> Vec n a -> Vec (m :+: n) a) | |
UniformV :: IsNat n => VectorT n a -> Op (One a -> Vec n a) | |
Scale :: (IsNat n, Num a, IsScalar a) => Op (One a -> Unop (Vec n a)) | |
Texture :: IsNat n => Nat n -> Op (Sampler n -> Vec n R -> R4) |