Frank Kuehnel schrieb:
> Hi folks,
> 
> how do I make this work: I want a division algebra over a field k, and I want 
> to define
> the conjugation of complex numbers, i.e. conj (C 1 2) but also the 
> conjugation of tensors of complex numbers
> conj (C (C 1 2) (C 1 4))
> 
> ghci load that stuff butt barfs on a simple
>> conj (C 1 2)
> 
> with 
>       instance Real a => DAlgebra a a -- Defined at Clifford.hs:20:10-31
>       instance (Real r, Num a, DAlgebra a r) => DAlgebra (Complex a) r
> 
> 
> here's the code:
> 
> -- for a normed division algebra we need a norm and conjugation!
> class DAlgebra a k | a -> k where -- need functional dependence because conj 
> doesn't refer to k
>    conj :: a -> a

Since conj does not need type 'k' I would separate it from class DAlgebra.

>    abs2 :: a -> k
> 
> -- real numbers are a division algebra
> instance Real a => DAlgebra a a where
>    conj    = id
>    abs2 x  = x*x
> 
> -- Complex numbers form a normed commutative division algebra
> data Complex a = C a a deriving (Eq,Show)

This is the way, we defined Complex in NumericPrelude. We have no
RealFloat constraint there in order to allow Gaussian numbers and other
types.


_______________________________________________
Haskell-Cafe mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to