summaryrefslogtreecommitdiff
path: root/1415/fp2/week3/mart/StdDynSet.icl
diff options
context:
space:
mode:
Diffstat (limited to '1415/fp2/week3/mart/StdDynSet.icl')
-rw-r--r--1415/fp2/week3/mart/StdDynSet.icl54
1 files changed, 54 insertions, 0 deletions
diff --git a/1415/fp2/week3/mart/StdDynSet.icl b/1415/fp2/week3/mart/StdDynSet.icl
new file mode 100644
index 0000000..1202ce2
--- /dev/null
+++ b/1415/fp2/week3/mart/StdDynSet.icl
@@ -0,0 +1,54 @@
+implementation module StdDynSet
+
+import StdEnv
+import StdDynamic
+
+class Set a | TC, ==, toString a
+
+:: Set = Set [Dynamic]
+
+instance zero Set
+where zero = Set []
+
+instance toString Set
+where toString (Set a) = abort "toString not implemented"
+
+instance == Set
+where
+ (==) (Set []) (Set []) = True
+ (==) (Set []) _ = False
+ (==) _ (Set []) = False
+
+toSet :: a -> Set | Set a
+toSet a = Set [dynamic a]
+
+nrOfElts :: Set -> Int
+nrOfElts (Set a) = length a
+
+isEmptySet :: Set -> Bool
+isEmptySet (Set []) = True
+isEmptySet _ = False
+
+memberOfSet :: a Set -> Bool | Set a
+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"
+
+isStrictSubset :: Set Set -> Bool
+isStrictSubset a b = abort "isStrictSubset nog niet geimplementeerd.\n"
+
+union :: Set Set -> Set
+union a b = abort "union nog niet geimplementeerd.\n"
+
+intersection :: Set Set -> Set
+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