try for week3 part 2
[fp1415.git] / fp2 / week3 / mart / StdDynSet.icl
index ee43631..ffc2590 100644 (file)
@@ -8,25 +8,29 @@ class Set a | TC, ==, toString a
 :: Set = Set [Dynamic]\r
 \r
 instance zero     Set\r
-where zero = abort "zero instance voor Set nog niet geimplementeerd.\n"\r
+where zero = Set []\r
 \r
 instance toString Set\r
-where toString a = abort "toString instance voor Set nog niet geimplementeerd.\n"\r
-\r
+where toString (Set a) = abort "toString not implemented"\r
+       \r
 instance == Set\r
 where == a b = abort "== instance voor Set nog niet geimplementeerd.\n"\r
 \r
 toSet :: a -> Set | Set a\r
-toSet a = abort "toSet nog niet geimplementeerd.\n"\r
+toSet a = Set [dynamic a]\r
 \r
 nrOfElts :: Set -> Int\r
-nrOfElts a = abort "nrOfElts nog niet geimplementeerd.\n"\r
+nrOfElts (Set a) = length a\r
 \r
 isEmptySet :: Set -> Bool\r
-isEmptySet a = abort "isEmptySet nog niet geimplementeerd.\n"\r
+isEmptySet (Set []) = True\r
+isEmptySet _ = False\r
 \r
 memberOfSet :: a Set -> Bool | Set a\r
-memberOfSet x a = abort "memberOfSet nog niet geimplementeerd.\n"\r
+memberOfSet _ (Set []) = False\r
+memberOfSet x (Set [y:xs])\r
+| isEqual x y = True\r
+| otherwise = memberOfSet x xs\r
 \r
 isSubset :: Set Set -> Bool\r
 isSubset a b = abort "isSubset nog niet geimplementeerd.\n"\r
@@ -42,3 +46,6 @@ intersection a b = abort "intersection nog niet geimplementeerd.\n"
 \r
 without :: Set Set -> Set\r
 without a b = abort "without nog niet geimplementeerd.\n"\r
+\r
+Start :: Set\r
+Start = toSet 1\r