added practicum files, updated gitignore
[fp1415.git] / files / practicum / TupleOverloading.icl
1 implementation module TupleOverloading
2
3 import StdEnv
4
5 instance + (a,b) | + a & + b where
6 instance + (a,b,c) | + a & + b & + c where
7
8
9 instance - (a,b) | - a & - b where
10 instance - (a,b,c) | - a & - b & - c where
11
12 instance * (a,b) | * a & * b where
13 instance * (a,b,c) | * a & * b & * c where
14
15 instance / (a,b) | / a & / b where
16 instance / (a,b,c) | / a & / b & / c where
17
18 instance zero (a,b) | zero a & zero b where
19 instance zero (a,b,c) | zero a & zero b & zero c where
20
21 instance one (a,b) | one a & one b where
22 instance one (a,b,c) | one a & one b & one c where
23
24 instance ~ (a,b) | ~ a & ~ b where
25 instance ~ (a,b,c) | ~ a & ~ b & ~ c where
26
27 Start = (test (1,2), test (1,2,3))
28
29 test a = ( zero + a == a && a == a + zero
30 , a - zero == a && a == ~ (zero - a)
31 , one * a == a && a == a * one
32 , zero * a == zero && zero == a * zero
33 , a / one == a
34 , ~ (~ a) == a
35 )