From 6f604b19d3f5966e5c1d7c4fdf3703bd6ff0861c Mon Sep 17 00:00:00 2001 From: Mart Lubbers Date: Thu, 16 Apr 2015 21:22:20 +0200 Subject: update to fp2 yay, public and licence --- fp1/week2/camil/TupleOverloading.icl | 53 ++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 fp1/week2/camil/TupleOverloading.icl (limited to 'fp1/week2/camil/TupleOverloading.icl') 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 + ) -- cgit v1.2.3