September 2017 Update
This commit is contained in:
parent
bba7bfd280
commit
ba8067c3b7
14570 changed files with 153136 additions and 63871 deletions
|
|
@ -1,2 +1,2 @@
|
|||
powerSet :: [a] -> [[a]]
|
||||
powerset = foldr (\x acc -> acc ++ map (x:) acc) [[]]
|
||||
powerSet = foldr (\x acc -> acc ++ map (x:) acc) [[]]
|
||||
|
|
|
|||
|
|
@ -1,15 +1,2 @@
|
|||
import qualified Data.Set as Set
|
||||
type Set=Set.Set
|
||||
unionAll :: (Ord a) => Set (Set a) -> Set a
|
||||
unionAll = Set.fold Set.union Set.empty
|
||||
|
||||
--slift is the analogue of liftA2 for sets.
|
||||
slift :: (Ord a, Ord b, Ord c) => (a->b->c) -> Set a -> Set b -> Set c
|
||||
slift f s0 s1 = unionAll (Set.map (\e->Set.map (f e) s1) s0)
|
||||
|
||||
--a -> {{},{a}}
|
||||
makeSet :: (Ord a) => a -> Set (Set a)
|
||||
makeSet = (Set.insert Set.empty) . Set.singleton.Set.singleton
|
||||
|
||||
powerSet :: (Ord a) => Set a -> Set (Set a)
|
||||
powerSet = (Set.fold (slift Set.union) (Set.singleton Set.empty)) . Set.map makeSet
|
||||
powerSet :: [a] -> [[a]]
|
||||
powerSet = foldr ((mappend <*>) . fmap . (:)) (pure [])
|
||||
|
|
|
|||
|
|
@ -1,2 +1,15 @@
|
|||
Prelude Data.Set> powerSet fromList [1,2,3]
|
||||
fromList [fromList [], fromList [1], fromList [1,2], fromList [1,2,3], fromList [1,3], fromList [2], fromList [2,3], fromList [3]]
|
||||
import qualified Data.Set as Set
|
||||
type Set=Set.Set
|
||||
unionAll :: (Ord a) => Set (Set a) -> Set a
|
||||
unionAll = Set.fold Set.union Set.empty
|
||||
|
||||
--slift is the analogue of liftA2 for sets.
|
||||
slift :: (Ord a, Ord b, Ord c) => (a->b->c) -> Set a -> Set b -> Set c
|
||||
slift f s0 s1 = unionAll (Set.map (\e->Set.map (f e) s1) s0)
|
||||
|
||||
--a -> {{},{a}}
|
||||
makeSet :: (Ord a) => a -> Set (Set a)
|
||||
makeSet = (Set.insert Set.empty) . Set.singleton.Set.singleton
|
||||
|
||||
powerSet :: (Ord a) => Set a -> Set (Set a)
|
||||
powerSet = (Set.fold (slift Set.union) (Set.singleton Set.empty)) . Set.map makeSet
|
||||
|
|
|
|||
2
Task/Power-set/Haskell/power-set-6.hs
Normal file
2
Task/Power-set/Haskell/power-set-6.hs
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
Prelude Data.Set> powerSet fromList [1,2,3]
|
||||
fromList [fromList [], fromList [1], fromList [1,2], fromList [1,2,3], fromList [1,3], fromList [2], fromList [2,3], fromList [3]]
|
||||
Loading…
Add table
Add a link
Reference in a new issue