diff options
Diffstat (limited to 'fp2/week3/mart/StdDynSet.icl')
-rw-r--r-- | fp2/week3/mart/StdDynSet.icl | 21 |
1 files changed, 14 insertions, 7 deletions
diff --git a/fp2/week3/mart/StdDynSet.icl b/fp2/week3/mart/StdDynSet.icl index ee43631..ffc2590 100644 --- a/fp2/week3/mart/StdDynSet.icl +++ b/fp2/week3/mart/StdDynSet.icl @@ -8,25 +8,29 @@ class Set a | TC, ==, toString a :: Set = Set [Dynamic]
instance zero Set
-where zero = abort "zero instance voor Set nog niet geimplementeerd.\n"
+where zero = Set []
instance toString Set
-where toString a = abort "toString instance voor Set nog niet geimplementeerd.\n"
-
+where toString (Set a) = abort "toString not implemented"
+
instance == Set
where == a b = abort "== instance voor Set nog niet geimplementeerd.\n"
toSet :: a -> Set | Set a
-toSet a = abort "toSet nog niet geimplementeerd.\n"
+toSet a = Set [dynamic a]
nrOfElts :: Set -> Int
-nrOfElts a = abort "nrOfElts nog niet geimplementeerd.\n"
+nrOfElts (Set a) = length a
isEmptySet :: Set -> Bool
-isEmptySet a = abort "isEmptySet nog niet geimplementeerd.\n"
+isEmptySet (Set []) = True
+isEmptySet _ = False
memberOfSet :: a Set -> Bool | Set a
-memberOfSet x a = abort "memberOfSet nog niet geimplementeerd.\n"
+memberOfSet _ (Set []) = False
+memberOfSet x (Set [y:xs])
+| isEqual x y = True
+| otherwise = memberOfSet x xs
isSubset :: Set Set -> Bool
isSubset a b = abort "isSubset nog niet geimplementeerd.\n"
@@ -42,3 +46,6 @@ intersection a b = abort "intersection nog niet geimplementeerd.\n" without :: Set Set -> Set
without a b = abort "without nog niet geimplementeerd.\n"
+
+Start :: Set
+Start = toSet 1
|