mooiere powerset
authorMart Lubbers <mart@martlubbers.net>
Tue, 3 Mar 2015 11:37:56 +0000 (12:37 +0100)
committerMart Lubbers <mart@martlubbers.net>
Tue, 3 Mar 2015 11:37:56 +0000 (12:37 +0100)
week4/mart/StdSet.dcl
week4/mart/StdSet.icl

index 6cad7f1..0c702ca 100644 (file)
@@ -22,4 +22,4 @@ product                       :: (Set a) (Set b) -> Set (a,b)
 instance zero (Set a)\r
 instance ==   (Set a) | Eq a\r
 \r
-powerSet               :: (Set a)         -> Set (Set a)\r
+powerSet               :: (Set a)         -> Set (Set a) | Eq a\r
index a14e6ba..ecb2e60 100644 (file)
@@ -48,9 +48,7 @@ where zero = Set []
 instance == (Set a) | Eq a\r
 where (==) s1 s2 = isSubset s1 s2 && isSubset s2 s1\r
 \r
-powerSet       :: (Set a)         -> Set (Set a)\r
-powerSet (Set a) = Set [(Set x) \\ x <- powerSet2 a]\r
-where\r
-       powerSet2       :: [a] -> [[a]]\r
-       powerSet2 [] = [[]]\r
-       powerSet2 [e:xs] = (powerSet2 xs) ++ [[e:x] \\ x <- powerSet2 xs]\r
+powerSet       :: (Set a)         -> Set (Set a) | Eq a\r
+powerSet (Set []) = Set [(Set [])]\r
+powerSet (Set [e:xs]) = union (powerSet (Set xs))\r
+       (Set [union (Set [e]) x \\ x <- fromSet (powerSet (Set xs))])\r