Given a set represented as a
String, we can compute its powerset using
foldLeft, as shown below.
|def powerset(s: String) =|
|case (acc, x) => acc ++ acc.map(_ + x)|
Isn’t this approach quite concise and elegant? Following snippet shows a pretty-printed output from
powerset for a set:
scala> powerset("abc").toList sortWith ( _ < _) mkString "\n" res3: String = " | a | ab | abc | ac | b | bc | c"
Following is a F# implementation of this same function.
|let powerset (s:string): Set<string> =|
|fun (acc: Set<string>) x -> acc + (Set.map(fun y -> x.ToString()+y) acc)|