Safe Haskell | None |
---|---|
Language | Haskell2010 |
Documentation
data CancellativeE Source #
class CancellativeK op a s where Source #
Num a => CancellativeK BinaryNumeric Add a CancellativeNum Source # | |
Fractional a => CancellativeK BinaryNumeric Mul a CancellativeFractional Source # | |
(KnownSymbol sym, CancellativeK k op a s) => CancellativeK k op a (CancellativeNamed sym s) Source # | |
CancellativeK k op a s => CancellativeK k op (i -> a) (CancellativeTagged FunctionLift s) Source # | |
(Unbox v, KnownNat n, CancellativeK k op v s) => CancellativeK k op (UVector n v) (CancellativeTagged UVectorLift s) Source # | Pointwise negation and inversion. Note that v^n has (a lot of) nontrivial zerodivisors even if v does not. The zerodivisors are all elements with a zero(divisor) in some coordinate, e.g. (1,0) and (0,1) are zerodivisors in R^2. (This corresponds to the idea that the Spec of a product ring is disconnected!) |
CancellativeK k1 op v s => CancellativeK k1 op (BVector k n v) (CancellativeTagged BVectorLift s) Source # | Pointwise negation and inversion. Note that v^n has (a lot of) nontrivial zerodivisors even if v does not. The zerodivisors are all elements with a zero(divisor) in some coordinate, e.g. (1,0) and (0,1) are zerodivisors in R^2. (This corresponds to the idea that the Spec of a product ring is disconnected!) |
type Cancellative op a = CancellativeK op a (CancellativeS op a) Source #
type family CancellativeS (op :: k) (a :: Type) = (r :: CancellativeE) Source #