| > 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