| > class PO a where
| >    (|=3D) :: a -> a -> Bool
| >
| > class Num a =3D> SemiRing a
| >
| > class SemiRing a =3D> CSemiRing a
| >
| > instance (Bounded a, Enum a, SemiRing a) =3D> PO a where
| >    a |=3D b
| >       =3D or [ a + c =3D=3D b | c <- boundedEnumFrom minBound ]
| >
| > instance CSemiRing a =3D> PO a where
| >    a |=3D b =3D a + b =3D=3D b

Perhaps this means that SemiRing and CSemiRing should be types:

class PO a where
        (|=) :: a -> a -> Bool

data Num a => SemiRing a = SemiRing a

data Num a => CSemiRing a = CSemiRing a

instance (Bounded a,Enum a) => PO (SemiRing a) where
        (SemiRing a) |= (SemiRing b) = SemiRing ( or [ a + c == b | c <- 
boundedEnumFrom minBound ] )

instance PO (CSemiRing a) where
        (CSemiRing a) |= (CSemiRing b) = CSemiRing ( a + b == b )


        Regards,
        Keean
_______________________________________________
Glasgow-haskell-users mailing list
[EMAIL PROTECTED]
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users

Reply via email to