diff options
author | Mart Lubbers | 2015-04-16 21:22:20 +0200 |
---|---|---|
committer | Mart Lubbers | 2015-04-16 21:22:20 +0200 |
commit | 6f604b19d3f5966e5c1d7c4fdf3703bd6ff0861c (patch) | |
tree | 96d580507249f7f58368476d9113007d4afcd748 /fp1/week2/camil/TupleOverloading.icl | |
parent | Added student numbers (diff) |
update to fp2 yay, public and licence
Diffstat (limited to 'fp1/week2/camil/TupleOverloading.icl')
-rw-r--r-- | fp1/week2/camil/TupleOverloading.icl | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/fp1/week2/camil/TupleOverloading.icl b/fp1/week2/camil/TupleOverloading.icl new file mode 100644 index 0000000..0ea437d --- /dev/null +++ b/fp1/week2/camil/TupleOverloading.icl @@ -0,0 +1,53 @@ +/**
+ * Mart Lubbers, s4109503
+ * Camil Staps, s4498062
+ */
+
+implementation module TupleOverloading
+
+import StdEnv
+
+instance + (a,b) | + a & + b where
+ + (a,b) (c,d) = (a+c,b+d)
+instance + (a,b,c) | + a & + b & + c where
+ + (a,b,c) (d,e,f) = (a+d,b+e,c+f)
+
+instance - (a,b) | - a & - b where
+ - (a,b) (c,d) = (a-c,b-d)
+instance - (a,b,c) | - a & - b & - c where
+ - (a,b,c) (d,e,f) = (a-d,b-e,c-f)
+
+instance * (a,b) | * a & * b where
+ * (a,b) (c,d) = (a*c,b*d)
+instance * (a,b,c) | * a & * b & * c where
+ * (a,b,c) (d,e,f) = (a*d,b*e,c*f)
+
+instance / (a,b) | / a & / b where
+ / (a,b) (c,d) = (a/c,b/d)
+instance / (a,b,c) | / a & / b & / c where
+ / (a,b,c) (d,e,f) = (a/d,b/e,c/f)
+
+instance zero (a,b) | zero a & zero b where
+ zero = (zero, zero)
+instance zero (a,b,c) | zero a & zero b & zero c where
+ zero = (zero, zero, zero)
+
+instance one (a,b) | one a & one b where
+ one = (one, one)
+instance one (a,b,c) | one a & one b & one c where
+ one = (one, one, one)
+
+instance ~ (a,b) | ~ a & ~ b where
+ ~ (a,b) = (~ a, ~ b)
+instance ~ (a,b,c) | ~ a & ~ b & ~ c where
+ ~ (a,b,c) = (~ a, ~ b, ~ c)
+
+Start = (test (1,2), test (1,2,3))
+
+test a = ( zero + a == a && a == a + zero
+ , a - zero == a && a == ~ (zero - a)
+ , one * a == a && a == a * one
+ , zero * a == zero && zero == a * zero
+ , a / one == a
+ , ~ (~ a) == a
+ )
|