equal
deleted
inserted
replaced
18 |
18 |
19 class (Classes.Semigroup a) => Monoidl a where { |
19 class (Classes.Semigroup a) => Monoidl a where { |
20 neutral :: a; |
20 neutral :: a; |
21 }; |
21 }; |
22 |
22 |
23 class (Classes.Monoidl a) => Group a where { |
23 class (Classes.Monoidl a) => Monoid a where { |
|
24 }; |
|
25 |
|
26 class (Classes.Monoid a) => Group a where { |
24 inverse :: a -> a; |
27 inverse :: a -> a; |
25 }; |
28 }; |
26 |
29 |
27 inverse_int :: Integer -> Integer; |
30 inverse_int :: Integer -> Integer; |
28 inverse_int i = negate i; |
31 inverse_int i = negate i; |
39 |
42 |
40 instance Classes.Monoidl Integer where { |
43 instance Classes.Monoidl Integer where { |
41 neutral = Classes.neutral_int; |
44 neutral = Classes.neutral_int; |
42 }; |
45 }; |
43 |
46 |
|
47 instance Classes.Monoid Integer where { |
|
48 }; |
|
49 |
44 instance Classes.Group Integer where { |
50 instance Classes.Group Integer where { |
45 inverse = Classes.inverse_int; |
51 inverse = Classes.inverse_int; |
46 }; |
52 }; |
47 |
53 |
48 pow_nat :: (Classes.Group b) => Classes.Nat -> b -> b; |
54 pow_nat :: (Classes.Monoid a) => Classes.Nat -> a -> a; |
49 pow_nat (Classes.Suc n) x = Classes.mult x (Classes.pow_nat n x); |
55 pow_nat (Classes.Suc n) x = Classes.mult x (Classes.pow_nat n x); |
50 pow_nat Classes.Zero_nat x = Classes.neutral; |
56 pow_nat Classes.Zero_nat x = Classes.neutral; |
51 |
57 |
52 pow_int :: (Classes.Group a) => Integer -> a -> a; |
58 pow_int :: (Classes.Group a) => Integer -> a -> a; |
53 pow_int k x = |
59 pow_int k x = |